Bonjour,
J'ai appris le langage C++ il y a très longtemps. Et à mon grand regret je l'ai en partie oublié. J'ai fait du java à la place. J'ai décidé de redevenir bon en C++. Et donc voici une petite question qui me chagrine. En java, l'appel au constructeur parent ou à la méthode parent surchargée est manuelle .
En C++ dans mes souvenirs, l'appel au constructeur est automatique. Il me semble que pour le constructeur c'est automatiquement du plus ancien parent au plus récent. Et pour le destructeur c'est le plus récent enfant (soi) au plus ancien parent. Corriger moi si je me trompe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class A { public A(int x){...} public int hello(){...} } class B extends A { public B(int y,int z){ ...super(y+z);... } public int hello(){... super.hello(); ... } }
et donc je me demande comment on traduirait le code ci-dessus en C++
Dans le (1) je me demande comment on fait des pré-traitement avant d'appeler le constructeur parent. On comment on lui transmet ces arguments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 class A { public A(int x){...} public int hello(){...} } class B: public A { public: //soit B(int y,int z): A(???) // et si on a des traitements a faire en plus dans l'enfant avant d'appeller le parent (1) { ... } //soit B(int y,int z) { ...A::A(y+z);... } // mais apparement ca marcher pas (2) int hello() {... A::hello(); ... } }
Dans le (2) apparement l'appelle au constructeur A::A cree un objet temporaire A qui n'est pas this.
Merci d'avance de vos réponses.
Partager