Bonjour,
En faisant un petit test, j'ai eu un comportement que je n'explique pas.
Le code suivant
me retourne:
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
23 class A { public: int x; void printA() { printf("+ %p\n", this); } }; class B: public A { public: virtual ~B() { } void printB() { printf("+ %p\n", this); } }; void test() { B b; b.printA(); b.printB(); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 + 0022FED4 + 0022FED0
Si je supprime mon "virtual ~B" ou que j'ajoute un "virtual ~A" ou que je supprime mon "int x", les deux "printf" retourne un "this" avec la même valeur.
Quelqu'un a une explication a ce comportement bizarre ? (Je pensais avoir un this toujours identique avec de l'héritage).
nb: je compile avec gcc.
Partager