#include <iostream>
using namespace std;
class CA
{
private:
public:
CA(){cout << "构造" <<endl;};
~CA(){cout << "析构CA" <<endl;};
};
class CTest:public CA
{
private:
public:
CTest(){cout << "构造CTest" <<endl; }
~CTest(){cout << "析构CTest" <<endl;}
};
int main(int argc, char *argv[])
{
CTest *test = new CTest();
CA *ca = test;
delete ca;
return 0;
}
运行结果:构造
构造CTest
析构CA
Press any key to continue
此时并没有析构子类对象
如果这样写的话:
#include <iostream>
using namespace std;
class CA
{
private:
public:
CA(){cout << "构造" <<endl;};
virtual ~CA(){cout << "析构CA" <<endl;};
};
class CTest:public CA
{
private:
public:
CTest(){cout << "构造CTest" <<endl; }
~CTest(){cout << "析构CTest" <<endl;}
};
int main(int argc, char *argv[])
{
CTest *test = new CTest();
CA *ca = test;
delete ca;
return 0;
}
运行结果:
构造
构造CTest
析构CTest
析构CA
Press any key to continue
可以析构子类.......