请教一个问题,有关虚析构函数的!
papaofdoudou
新星创作者: 人工智能技术领域
领域专家: 嵌入式与硬件开发技术领域 2008-11-14 10:15:27 请问各位朋友,如果基类的析构函数是虚的,那么子类的析构函数一定是虚的吗?即使没有加virtual??
看个例子:
#include <iostream>
using namespace std;
//#include <string.h>
class base;
base *pb;
class base
{
private:
char *data;
public:
base(const char*p)
{
data=new char[strlen(p)+1];
strcpy(data,p);
pb=this;
}
virtual void display() //base类的析构函数是虚的,是否从此有此类派生的类析构函数都是虚的?
{
cout<<"base"<<endl;
cout<<data<<endl;
}
virtual ~base()
{
delete []data;
cout<<"base destructed"<<endl;
}
};
class derived:public base
{
public:
derived(const char *p):base(p)
{
}
void display()
{
cout<<"derived"<<endl;
base::display();
}
virtual ~derived() //再次的virtual 是否必要?
{
cout<<"derived destructed"<<endl;
}
};
class dder:public derived
{
public:
dder(const char *p):derived(p)
{
// cout<<"dder"<<endl;
}
virtual ~dder() //同理,再此的 virtual 可否省略??
{
cout<<"dder constructed"<<endl;
}
};