Bonjour,

En faisant un petit test, j'ai eu un comportement que je n'explique pas.

Le code suivant

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();
}
me retourne:
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.