Recentemente mentre stavo spiegando a qualcuno la differenza di base tra riferimenti e puntatori (nel contesto della programmazione C++), ho detto le solite spiegazioni che parlano di argomenti di funzione differenti che passano le convenzioni - Call by valore, Call by pointer, Call by reference e tutta la teoria associata sui riferimenti.Riferimento C++ e puntatori const in C/C++
Ma poi ho pensato a qualsiasi cosa faccia un riferimento C + in termini di passaggio di argomenti, (Consente un modo efficiente di memoria di passare strutture/oggetti di grandi dimensioni, allo stesso tempo lo mantiene sicuro non permettendo al destinatario di modificare alcuna variabile dell'oggetto passato come riferimento, se il nostro design lo richiede)
Un puntatore const in C otterrebbe la stessa cosa, ad esempio Se bisogna passare un puntatore struttura dire struct mystr * ptr, colando il puntatore struttura come costante -
func(int,int,(const struct mystr*)(ptr));
sarà non PTR essere una sorta di equivalente a un riferimento?
Will non funziona nel modo che sarebbe memoria efficiente non replicare la struttura (passaggio per puntatore), ma anche sicuro vietando qualsiasi modifica dei campi di struttura per il fatto che esso è passato come un puntatore const.
Nel contesto di oggetto C++, si può passare puntatore const oggetto invece riferimento a un oggetto come ottenere stessa funzionalità)
Se sì, allora lo scenario che cosa caso d'uso in C++, ha bisogno di riferimenti. Eventuali vantaggi specifici dei riferimenti e dei relativi inconvenienti?
grazie.
-AD
@elusive: in che modo i puntatori sono meno "sicuri" rispetto ai riferimenti? – fredoverflow