当前位置 : 主页 > 手机开发 > harmonyos >

基类的析构函数需要virtual

来源:互联网 收集:自由互联 发布时间:2023-10-08
基类的析构函数需要virtual,如果不是virtual 那么delete时将不会调用派生类的析构函数(可能会存在内存泄露) 如下: class A { public:~A(){cout "destroy A\n";} }; class B:public A { public:~B(){cout "de


基类的析构函数需要virtual,如果不是virtual 那么delete时将不会调用派生类的析构函数(可能会存在内存泄露)

如下:

class A
 {
 public:
~A()
{
cout << "destroy A\n";
}
 };
 class B:public A
 {
 public:
~B()
{
cout << "destroy B\n";
}
 };
 int _tmain(int argc, _TCHAR* argv[])
 {
A *a=new B;
delete a;
cin.get();
return 0;
 }

输出:destroy A


加上virtual
class A
 {
 public:
virtual ~A()
{
cout << "destroy A\n";
}
 };
 class B:public A
 {
 public:
~B()
{
cout << "destroy B\n";
}
 };
 int _tmain(int argc, _TCHAR* argv[])
 {
A *a=new B;
delete a;
cin.get();
return 0;
 }

输出:

destroy B

destroy A

上一篇:BCB将RichEdit光标移到最后一行
下一篇:没有了
网友评论