Я сталкиваюсь с этим output param convention, что способствует указателям, а не рекомендациям.Избегайте бесконтактных эталонных параметров
«В списках параметров функции все ссылки должны быть константной:.
void Foo(const string &in, string *out);
На самом деле это очень сильная условность в коде Google, что входные аргументы являются значениями или константные ссылки, а выходные аргументы являются указателями ввода параметры могут быть константными указателями, , но мы никогда не позволяют неконстантным эталонные параметры, за исключением, когда это требуется в соответствии с соглашением, например, своп(). "
это, кажется, несколько отличается от принятого ответа на этот question, в котором говорится, что вместо этого следует использовать ссылки, если только функция не связана с некоторой арифметикой указателя.
Так что интересно, действительно ли этот input param is const reference, output param is pointer
является только вопросом стиля Google, или это более общепринятая практика (чтобы избежать неконстантных опорных параметров).
Вы можете рассмотреть возможность того, что упомянутый стандарт кодирования не является допустимым это так, лучший в мире ... – PiotrNycz
Это общепринятая практика, так как использует ссылки для выходных параметров. Использование ссылок, по-видимому, более популярно, что, по-моему, во многом связано с тем, что это делает стандартная библиотека C++ (т. Е. 'Swap()'). Но только потому, что что-то менее популярно, это не означает, что все, кроме Google, избегают этого. Есть люди за пределами Google, которые следуют этому же соглашению. И есть люди, которые не следуют практике, но считают, что это совершенно приемлемо. Я не помню, чтобы встретил любого, кто был против этого. В конечном итоге это стиль мнения больше, чем догма. – Cornstalks
Если вы не будете вынуждены использовать это руководство на работе, я бы не советовал его использовать. Прочитайте [это] (https://www.linkedin.com/pulse/20140503193653-3046051-why-google-style-guide-for-c-is-a-deal-breaker) – 0x499602D2