esatto, se ad esempio la classe dell'oggetto 'a' ha un campo pubblico nome_campo puoi modificarlo con
a.nome_campo = 0;
però se l'oggetto 'a' non è passato per reference, ma per valore, stai modificando una copia dell'oggetto, esempio:
Codice PHP:
#include <iostream>
using namespace std;
class MiaClasse{
public:
int nome_campo;
MiaClasse(){
nome_campo = 1;
}
};
//Passaggio per valore
void f1(MiaClasse a){
a.nome_campo = 0;
}
void f2(MiaClasse &a){
a.nome_campo = 0;
}
int main(){
MiaClasse a;
cout << "a.nome_campo dopo la creazione: " << a.nome_campo << endl;
f1(a);
cout << "a.nome_campo dopo f1(a): " << a.nome_campo << endl;
f2(a);
cout << "a.nome_campo dopo f2(a): " << a.nome_campo;
return 0;
}
l'ouput che ottieni è:
Codice PHP:
a.nome_campo dopo la creazione: 1
a.nome_campo dopo f1(a): 1
a.nome_campo dopo f2(a): 0