为什么要把父类的析构函数定义成虚函数?
2010-04-09 09:58
162 查看
写成虚的是为了在实现多态的时候不造成内存泄露,
如果基类析构函数前不加vitual,派生类对象被销毁后,只会调用基类的析构函数,而不会去调用派生类的析构函数。
class A
{
public:
A(){TRACE("A()/n");};
~A(){TRACE("~A()/n");};
};
class B : public A
{
public:
B(){TRACE("B()/n");};
~B(){TRACE("~B()/n");};
};
void CEgDlg::OnButton1()
{
A * p = (A*)new B() ;
delete p ;
}
运行结果如下:
A()
B()
~A()
http://blog.csdn.net/dragonfly0939/archive/2008/10/28/3168977.aspx
如果基类析构函数前不加vitual,派生类对象被销毁后,只会调用基类的析构函数,而不会去调用派生类的析构函数。
class A
{
public:
A(){TRACE("A()/n");};
~A(){TRACE("~A()/n");};
};
class B : public A
{
public:
B(){TRACE("B()/n");};
~B(){TRACE("~B()/n");};
};
void CEgDlg::OnButton1()
{
A * p = (A*)new B() ;
delete p ;
}
运行结果如下:
A()
B()
~A()
http://blog.csdn.net/dragonfly0939/archive/2008/10/28/3168977.aspx
相关文章推荐
- 为什么要把父类的析构函数定义成虚函数?
- 为什么要把父类的析构函数定义成虚函数?
- 为什么要把父类的析构函数定义成虚函数
- 析构函数为什么要定义为虚函数
- 为什么析构函数要定义为虚函数
- C++中父类的析构函数为什么要为虚函数
- 为什么要将析构函数定义为虚函数
- 关于父类析构函数为什么要定义为虚函数_boolan_第二门课_第一周
- (1)为什么构造函数的名字用类名?(2)构造函数返回值问题;(3)析构函数和构造函数定义为虚函数;
- C++析构函数为什么要定义成虚函数
- 从为什么要将基类的析构函数定义为虚函数谈起~~
- C++析构函数为什么要为虚函数
- 析构函数定义为虚函数
- C++析构函数为什么要为虚函数
- [置顶] C++析构函数为什么要为虚函数
- 代码操作 ACCESS时为什么老出现XXX函数未定义错误?
- Python - 在定义函数时,为什么默认参数不能放在必选参数前面?
- 析构函数一般在什么情况下会被定义成虚函数
- 析构函数定义为虚函数原因
- 父类中调用自身定义的虚函数,其中若修改派生类定义的变量,无效