Google C++ Style Guide проводит четкое различие (за которым следует cpplint.py) между входными параметрами (→ const ref, value) и входными/выходными параметрами (→ неконтактными указателями):Руководства по стилю ввода-вывода Google в качестве указателей
Параметры для функций C/C++ либо вводятся в функцию, вывод из функции, либо и то, и другое. Входными параметрами обычно являются значения или константные ссылки, а выходные и входные/выходные параметры будут указатели неконстантных указателей.
И далее:
На самом деле это очень сильная условность в коде Google, что входные аргументы являются значениями или константные ссылки, а выходные аргументы являются указателями.
Но я не могу понять, почему аргументы ввода/вывода (я оставляю выходные аргументы в стороне) не должны передаваться по ссылке. В stackoverflow есть много тем, связанных с этим вопросом: например. here, принятый ответ четко сказать, что
это в основном о стиле
но если
вы хотите быть в состоянии передать нуль, вы должны использовать указатель
Итак, в чем смысл всегда требуется указатель, если я wa nt, чтобы указатель не был нулевым? Почему использовать только входные аргументы?
Если это не указатель, вы знаете, что он не будет изменен. Это полезная информация. Если параметры out могут быть ссылками, или в параметрах могут быть указатели, вам нужно либо постоянно смотреть документацию, либо запоминать все. – molbdnilo
Просто потому, что он от Google не означает, что он должен иметь смысл. –
FWIW, [Titus's CppCon talk] (https://www.youtube.com/watch?v=NOCElcMcFik) – chris