1. 如下例程:
class A
{
public:
A()
{
std::cout << "A()" << std::endl;
f();
}
~A() // 非虚
{
std::cout << "~A()" << std::endl;
f();
}
virtual void f() // 虚
{
std::cout << "A::f()" << std::endl;
}
protected:
private:
};
class B : public A
{
public:
B()
{
std::cout << "B()" << std::endl;
f();
}
~B() // 非虚
{
std::cout << "~B()" << std::endl;
f();
}
virtual void f() // 虚
{
std::cout << "B::f()" << std::endl;
}
protected:
private:
};
int main()
{
A * pA = new B();
std::cout << "======" << std::endl;
delete pA;
return 0;
}
2. 运行结果:
A()
A::f()
B()
B::f()
======
~A()
A::f()