class CA
{
public:
CA() { std::cout<<"CA construction"<<std::endl;};
~CA(){ std::cout<<"CA destruction"<<std::endl;}; // 无virtual
};
class CB : public CA
{
public:
CB() { std::cout<<"CB construction"<<std::endl;}
~CB(){ std::cout<<"CB destruction"<<std::endl;}
};
void GetValueMax()
{
CB b;
}
int main()
{
GetValueMax();
std::cout<<std::endl<<std::endl;
CA* pA;
pA = new CB;
delete pA;
}
输出:
CA construction
CB construction
CB destruction
CA destruction
CA construction
CB construction
CA destruction
如果CA的析构函数声明为virtual,则会调用CB的析构函数。