为什么要把父类的析构函数定义成虚函数?

简介: 为什么要把父类的析构函数定义成虚函数?

问:为什么要把父类的析构函数定义成虚函数?

答:否则子类的析构函数可以未被调用,具体代码如下:

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()
相关文章
|
2月前
|
C++
派生类的构造函数
派生类的构造函数
51 9
|
7月前
|
编译器 C++
C++程序中的派生类析构函数
C++程序中的派生类析构函数
41 2
|
7月前
|
编译器 C++
C++程序中的派生类构造函数
C++程序中的派生类构造函数
69 1
|
7月前
|
存储 编译器 对象存储
【C++】类与对象(构造函数、析构函数、拷贝构造函数、常引用)
【C++】类与对象(构造函数、析构函数、拷贝构造函数、常引用)
51 0
|
7月前
|
存储 编译器 C语言
【C++】类和对象之构造函数、析构函数、拷贝构造函数(二)
【C++】类和对象之构造函数、析构函数、拷贝构造函数(二)
|
存储 编译器 C++
类和对象:构造函数,析构函数与拷贝构造函数
类和对象:构造函数,析构函数与拷贝构造函数
|
编译器 程序员 C++
C++类和对象中(构造函数,析构函数,拷贝构造函数)详解(下)
C++类和对象中(构造函数,析构函数,拷贝构造函数)详解
|
编译器 C语言 C++
C++类和对象中(构造函数,析构函数,拷贝构造函数)详解(上)
C++类和对象中(构造函数,析构函数,拷贝构造函数)详解
C++学习之-析构函数必须为虚函数吗?
今天讨论个比较有意思的话题:析构函数是不是必须要为虚函数? 先说答案: 析构函数可以是虚函数,也可以不是虚函数。
104 1
<c++> 类的继承 | 基类与派生类 | 构造函数与析构函数
<c++> 类的继承 | 基类与派生类 | 构造函数与析构函数
157 0

热门文章

最新文章