Voglio passare un oggetto di Classe A (chiamarlo a) per riferimento (nel senso ampio, ovvero tramite A & o A *) al costruttore di un'altra Classe B. I non voglio che 'a' sia modificato all'interno di B ('a' è di sola lettura ed è di grandi dimensioni ed è per questo che voglio passarlo per riferimento). So di due opzioni:Passaggio per opzioni di riferimento in C++
1) Pass 'un' come
const A & a_
2) Pass 'un' come
const A * a_
Lo svantaggio dell'opzione 1 è che posso erroneamente passare un r-value. Lo svantaggio dell'opzione 2 è che posso erroneamente passare un puntatore nullo.
Le mie domande sono: 1) Ho ragione sugli svantaggi sopra? 2) C'è un altro modo consigliato di passare 'a' per riferimento?
Ho visto le risposte nel link sottostante. Ma sono curioso di sapere se ci sono altre opzioni oltre a ciò che viene pubblicato in quella domanda. Are there benefits of passing by pointer over passing by reference in C++?
Come probabile è che si passa erroneamente un valore di R, e quanto grave sarà le conseguenze di tale azione sarebbe? – emlai
Se hai le tue preoccupazioni e conosci i problemi, hai bisogno di un controllo degli errori. Passa per riferimento e prova/cattura. Se lo fai con un puntatore, modificherai l'istanza originale del tuo oggetto. –
Che cos'è un valore? È un'uguaglianza indefinita? Ti piace un lvalue? –