class B { public: virtual void foo() { cout << "B" << a; } int a = 1; }; class D : public B{ public: D() { a = 2; } virtual void foo() { cout << "D" << a; } }; B x = D(); // 请务必仔细看这一行 x.foo();
B1
B2
D1
D2