Comportement bizarre du "this" avec de l'héritage
Bonjour,
En faisant un petit test, j'ai eu un comportement que je n'explique pas.
Le code suivant
Code:
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();
} |
me retourne:
Code:
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.