析构函数设为虚函数的作用
来源:互联网 发布:cv 数据库 编辑:程序博客网 时间:2024/05/29 03:49
析构函数设为虚函数的作用:
解释:在类的继承中,如果有基类指针指向派生类,那么用基类指针delete时,如果不定义成虚函数,派生类中派生的那部分无法析构。
例:
#include
#include
class
{
public:
A();
virtual
};
A::A()
{
}
A::~A()
{
printf("Delete
}
class
{
public:
B();
~B();
};
B::B()
{
B::~B()
{
printf("Delete
}
int
{
A
delete
return
}
输出结果为:Delete
如果把A的virtual去掉:那就变成了Delete
因此在类的继承体系中,基类的析构函数不声明为虚函数容易造成内存泄漏。
// virtualDestructor.cpp : Defines the entry point for the console application.//#include "stdafx.h"class A{public:A();//virtual ~A();};A::A(){}A::~A(){printf("Delete class AP\n");}class B : public A{public:B();~B();};B::B(){ }B::~B(){printf("Delete class BP\n");}int main(int argc, char* argv[]){A *b=new B;delete b;return 0;}/*Delete class APPress any key to continue*/
- 析构函数设为虚函数的作用
- C++ 析构函数设为虚函数的好处
- 为什么不能把构造函数设为虚函数,却可以把析构函数设为虚函数
- 为什么基类的析构函数要设为虚函数
- C++ 析构函数设为虚函数是必要的?
- 多态时最好将基类的析构函数设为virtual
- 将基类析构函数设为虚函数的目的
- 基类析构函数为虚函数的作用
- 构造函数不能为虚函数,虚析构函数的作用
- 基类的析构函数为什么要设为Virtual
- 析构函数声明为私有的作用
- 析构函数声明为私有的作用
- 析构函数声明为私有的作用
- 构造函数、析构函数为虚函数的区别
- 析构函数和虚函数的用法和作用
- 析构函数和虚函数的用法和作用?
- 在什么时候将函数的参数设为引用类型?
- 将类的方法声明为虚函数的作用
- 构造、析构函数可否为virtual
- nyoj 489 哭泣天使
- Mybatis中使用junit的一些技巧
- SQL左右内外连接的区别
- Vim进阶简明手册
- 析构函数设为虚函数的作用
- C++类static静态成员变量和const常量成员变量(和引用相同)初始化方法
- poj 2239 Selecting Courses(二分图最大匹配or最大流)
- MyBatis之关联映射
- 关于网页页面制作滚动字幕
- 鉴定回文数
- 第3章 栈和队列——循环队列的元素的插入和删除
- 双色点阵
- Thinking in Java之集合框架浅析