Look a this basic C++ code:
#include <iostream>
class MaClasse
{
public:
MaClasse();
void afficher();
void set(int valeur1,int valeur2);
void add1(MaClasse c2);
int _valeur1;
int _valeur2;
};
MaClasse::MaClasse()
{
std::cout << "Constructeur" << std::endl;
}
void MaClasse::afficher()
{
std::cout << _valeur1 << " " << _valeur2 << std::endl;
}
void MaClasse::add1(MaClasse c2)
{
c2._valeur1++;
c2._valeur2++;
}
void MaClasse::set(int valeur1,int valeur2)
{
_valeur1 = valeur1;
_valeur2 = valeur2;
}
int main(int argc, char *argv[])
{
MaClasse a1;
a1.set(10,20);
MaClasse a2;
a2.set(30,40);
a1.add1(a2);
a2.afficher();
return 0;
}
There is something i do not understand on this line:
a1.add1(a2);
As you can see, i do not pass a pointer but the object itself. When i display a2 values: They do not have changed.
But, i do not understand why the constructor is not called. a2 should be copied ?
Thanks