Sono consapevole delle differenze tra passaggio per valore, riferimento o puntatore nel caso generale. Tuttavia, la mia domanda riguarda il caso speciale di un contenitore con struttura semplice.Passaggio di container per valore o per riferimento
Assumendo questo caso:
class image{
image()=default;
image(image const&)=default;
~image()=default;
int w;
int h;
uchar* data;
}
Quando si passa un oggetto di questa classe quanto copiato sono solo due numeri interi e non puntatore l'intero dati. In questo caso c'è lo scopo di passarlo per riferimento? O c'è uno scopo di non passarlo per riferimento?
La cosa che ha fatto scattare questa domanda è che ho letto che iterators
in C++ sono stati progettati per essere leggeri e per essere passati per valore. Quindi, penso che questo concetto possa essere applicato a classi che rappresentano un contenitore per i dati reali senza dati.
Che cosa significa 'uchar * data'? Voglio dire, è una risorsa da copiare e pulire in profondità? – Jarod42
durante la copia (non la clonazione) verrà copiato solo il puntatore e entrambi gli oggetti condivideranno gli stessi dati effettivi –
correlati: http://stackoverflow.com/questions/4172722/questo-è-la-rolla-di-store –