Il Google C++ Style Guide opera una netta distinzione (rigorosamente seguito da cpplint.py) tra i parametri di input (→ ref const, il valore) e input-output o parametri di output (→ puntatori non const):guida di stile di Google sui parametri di ingresso/uscita come puntatori
I parametri delle funzioni C/C++ sono immessi nella funzione, emettono dalla funzione o entrambi. I parametri di input sono in genere valori o riferimenti const, mentre i parametri di output e input/output sono puntatori non-const .
E ancora:
In realtà si tratta di una convenzione molto forte nel codice di Google che gli argomenti di input sono valori o riferimenti const mentre argomenti di uscita sono puntatori.
Ma non riesco a capire perché gli argomenti di input/output (lascio gli argomenti di output a parte) non dovrebbero essere passati per riferimento. Su StackOverflow ci sono molti argomenti relativi a questa domanda: ad es. here, la risposta accettata dicono chiaramente che
è per lo più una questione di stile
ma che se
si vuole essere in grado di passare null, è necessario utilizzare un puntatore
Quindi, qual è il punto di sempre richiedere un puntatore se devo nt per evitare che il puntatore sia nullo? Perché usare solo riferimenti per argomenti di input?
Se non è un puntatore, sai che non verrà modificato. Questa è un'informazione utile. Se i parametri out possono essere riferimenti o i parametri possono essere indicatori, è necessario osservare costantemente la documentazione o ricordare tutto. – molbdnilo
Solo perché proviene da Google non significa che abbia senso. –
FWIW, [Conversazione di Titus's CppCon] (https://www.youtube.com/watch?v=NOCElcMcFik) – chris