简要解读C++的动态和静态关联以及虚析构函数

2020-01-06 13:46:46于丽
  • class Circle:public Point //定义派生类Circle类  { 
  • public:  Circle( ){} //Circle类构造函数 
  • ~Circle( ){cout<<"executing Circle destructor"<<endl;} //Circle类析构函数  private: 
  • int radius;  }; 
  • int main( )  { 
  • Point *p=new Circle; //用new开辟动态存储空间  delete p; //用delete释放动态存储空间 
  • return 0;  } 

    这只是一个示意的程序。p是指向基类的指针变量,指向new开辟的动态存储空间,希望用detele释放p所指向的空间。但运行结果为:

     

     
    1. executing Point destructor 

    表示只执行了基类Point的析构函数,而没有执行派生类Circle的析构函数。

    如果希望能执行派生类Circle的析构函数,可以将基类的析构函数声明为虚析构函数,如: