Détail de l'instanciation d'une classe
Bonjour,
J'ai une question qui me taraude, je voudrais savoir exactement ce qui se passe lors de l'instanciation d'une classe. Je vais donner quelques exemples.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
class MyClass{
public:
int a;
std::vector<int> * pVec;
}
void fonction
{
// Je joue avec m1
MyClass m1; // Appel au constructeur MyClass();
m1.a = 43;
m1.pVec = new std::vector<int>(1);
(*m1.pVec)[0] = 314;
// Je crée m2
MyClass m2 = m1;
} |
Lors de la construction de m2, que se passe-t-il exactement?
- Y a-t-il appel au constructeur implicit"? Suivi d'une (miraculeuse) copie de chacun des attributs?
- Ou alors, est-ce qu'il y a une allocation mémoire de la bonne taille, suivi d'une copie (aveugle) bit à bit des données?
- Autre chose?
Si vous avez un lien, je suis preneur, Google n'a pas été trop mon ami sur ce coup là...
Merci d'avance!