C++虚析构函数
来源:互联网 发布:四平做网站佳业网络 编辑:程序博客网 时间:2024/05/16 09:55
在C++中,构造函数不能被声明为虚函数,但是析构函数可以被声明为虚函数。只要基类的析构函数被声明为虚函数了,则它的派生类的析构函数,无论是否使用virtual,都将自动被说明为虚函数。
当使用delete运算符和析构函数一起使用时,delete一个对象,则delete隐含对析构函数的调用,如果析构函数不是虚函数,则子类的对象的析构函数将不会被自动调用。
1 基类的析构函数被声明为虚函数,则它的派生类的析构函数,无论是否使用virtual,都将自动被说明为虚函数。
2,一般在定义类时,建议都将析构函数声明为虚函数。要镇用。
3.delease隐含对析构函数的调用,如果析构函数不是虚函数,则子类的对象的析函数将不会被自动调用。
#include <iostream>
class Base
{
private:
int a;
public:
Base(int _a)
{
a = _a;
}
virtual ~Base()
{
a = 0;
}
};
class Derive :public Base
{
private:
char *str;
public:
Derive(int _a,const char *_s):Base(_a)
{
str = new char[strlen(_s) + 1];
strcpy(str, _s);
}
~Derive()
{
delete str;
}
};
int main(int argc,const char * argv[])
{
// insert code here...
Base *p = newDerive(10, "string");
delete p;
return 0;
}
- C++-----虚析构函数
- C++----虚析构函数
- C++【浅谈虚析构函数】
- C++_虚析构函数
- 【c++】虚析构函数
- (C++)虚析构函数
- C++---------之--------【虚析构函数】
- 【C/C++】C++虚析构函数的作用
- [C/C++]C函数
- 【C++】正确使用虚析构函数
- c++------------之---【虚析构函数应用】
- <C++>析构函数、虚析构函数和构造函数
- c 函数
- C函数
- C 函数
- C函数
- 【C++】函数
- C 函数
- Opencv中的数据存储(1)
- HTML5 WebSocket的使用及例子
- QMainWindow动态切换CentralWidget
- web二三维联动
- Query中.html(“xxx”)和.append("xxx")有什么区别和不同
- C++虚析构函数
- jboss发布基本流程
- Java并发编程学习2
- Java常用类库--日期操作类
- 单元测试与JUNIT
- Bug 11891463 : MINACT-SCN MASTER-STATUS MESSAGES WRITTEN TO MMON TRACE FILE
- XMemcached&Spring集成
- 为什么寄存器比内存快?
- 表单input按钮在各浏览器之间的兼容性