您的位置:首页 > 编程语言 > C语言/C++

C++虚析构函数

2013-10-21 16:20 232 查看
         在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 = new
Derive(10,
"string");
   
delete p;
   
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: