关于析构函数的问题

C/C++ > C++ 语言 [问题点数:30分,结帖人kingstarer]
等级
本版专家分:6786
结帖率 91.75%
等级
本版专家分:5934
等级
本版专家分:6786
等级
本版专家分:25964
勋章
Blank
红花 2009年5月 C/C++大版内专家分月排行榜第一
Blank
蓝花 2009年6月 C/C++大版内专家分月排行榜第三
等级
本版专家分:5934
等级
本版专家分:86256
勋章
Blank
红花 2011年3月 C/C++大版内专家分月排行榜第一
2010年9月 C/C++大版内专家分月排行榜第一
Blank
黄花 2015年1月 C/C++大版内专家分月排行榜第二
2012年3月 C/C++大版内专家分月排行榜第二
2011年11月 C/C++大版内专家分月排行榜第二
2010年6月 C/C++大版内专家分月排行榜第二
2010年5月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2011年4月 C/C++大版内专家分月排行榜第三
2011年2月 C/C++大版内专家分月排行榜第三
2010年8月 C/C++大版内专家分月排行榜第三
等级
本版专家分:17008
等级
本版专家分:64318
勋章
Blank
进士 2009年 总版技术专家分年内排行榜第六
Blank
金牌 2009年4月 总版技术专家分月排行榜第一
Blank
红花 2009年11月 Linux/Unix社区大版内专家分月排行榜第一
2009年6月 Linux/Unix社区大版内专家分月排行榜第一
2009年4月 C/C++大版内专家分月排行榜第一
2009年3月 C/C++大版内专家分月排行榜第一
2009年3月 Linux/Unix社区大版内专家分月排行榜第一
2009年2月 Linux/Unix社区大版内专家分月排行榜第一
Blank
黄花 2010年1月 C/C++大版内专家分月排行榜第二
2009年10月 Linux/Unix社区大版内专家分月排行榜第二
2009年9月 Linux/Unix社区大版内专家分月排行榜第二
2009年8月 C/C++大版内专家分月排行榜第二
2009年8月 Linux/Unix社区大版内专家分月排行榜第二
2009年7月 C/C++大版内专家分月排行榜第二
2009年6月 C/C++大版内专家分月排行榜第二
2009年5月 C/C++大版内专家分月排行榜第二
2009年5月 Linux/Unix社区大版内专家分月排行榜第二
2009年4月 Linux/Unix社区大版内专家分月排行榜第二
2009年2月 C/C++大版内专家分月排行榜第二
2009年1月 Linux/Unix社区大版内专家分月排行榜第二
等级
本版专家分:6786
等级
本版专家分:72661
勋章
Blank
红花 2009年12月 C/C++大版内专家分月排行榜第一
2009年6月 C/C++大版内专家分月排行榜第一
Blank
黄花 2011年5月 C/C++大版内专家分月排行榜第二
2010年9月 C/C++大版内专家分月排行榜第二
Blank
蓝花 2009年11月 C/C++大版内专家分月排行榜第三
等级
本版专家分:57192
勋章
Blank
签到新秀 累计签到获取,不积跬步,无以至千里,继续坚持!
Blank
铜牌 2011年6月 总版技术专家分月排行榜第三
Blank
红花 2011年11月 专题开发/技术/项目大版内专家分月排行榜第一
2011年10月 专题开发/技术/项目大版内专家分月排行榜第一
2011年9月 专题开发/技术/项目大版内专家分月排行榜第一
2011年8月 专题开发/技术/项目大版内专家分月排行榜第一
2011年7月 专题开发/技术/项目大版内专家分月排行榜第一
2011年6月 C/C++大版内专家分月排行榜第一
Blank
黄花 2011年7月 C/C++大版内专家分月排行榜第二
2011年5月 专题开发/技术/项目大版内专家分月排行榜第二
kingstarer

等级:

关于使用析构函数的几点注意事项

析构函数为你提供了一种机制,可以让你在系统释放对象前做一些善后工作,如清理内存,释放空间等。但是在以下两个方面使用虚构函数时要尤为注意。  1. 多态性

C++继承关于析构函数问题

析构函数问题 ...最近在工作中,遇到了一个关于析构函数很奇葩的问题!导致查了半天的Bug,才发现是少声明了一个析构函数。 首先,存在Bug的代码,大体如下: // Base.h #define USE_EXPROT_ __attribut((...

构造函数和析构函数是否可以被重载

构造函数可以被重载,因为构造函数可以有多个且可以带参数。 析构函数不可以被重载,因为析构函数只能有一个,且不能带参数。

C++中虚析构函数的作用及其原理分析

C++中的虚析构函数到底什么时候有用的,什么作用呢。 一.虚析构函数的作用 ...也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内

显式调用析构函数

把一个对象看作占用了部分栈内存,占用了部分堆内存(如果申请了的话),这样便于理解这个问题 系统隐式调用析构函数的时候,会加入释放栈内存的动作(而堆内存则由用户手工的释放) 用户显式调用析构函数的时候,...

C++中虚析构函数的作用

我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; ...

java中的析构函数

其实:析构函数(destructor) 与 构造函数 相反,当对象结束其 生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存...

C++ 析构函数

C++ 析构函数我使用的继承开发环境: Visual Studio 2010设计一个类时,如何写析构函数析构函数如果我们不写的话,C++ 会帮我们自动的合成一个,就是说:C++ 会自动的帮我们写一个析构函数。很多时候,自动生成...

对于虚析构函数的理解

首先,对于虚析构函数,那就得说下构造函数和析构函数了。 构造函数:进行初始化成员变量的函数。 析构函数:在对象生命周期结束的时候,完成资源的回收和清理。 对于虚析构,就是在析构函数前加virtual关键字,那么...

C++中为什么析构函数是虚函数

如果基类的析构函数不是虚函数,在特定情况下会导致派生来无法被析构。 情况1:用派生类类型指针绑定派生类实例,析构的时候,不管基类析构函数是不是虚函数,都会正常析构 情况2:用基类类型指针绑定派生类实例,...

析构函数声明为私有的作用

当我们规定类只能在堆上分配内存时,就可以将析构函数声明为私有的。class alloc{public: alloc():private: ~alloc();}; 如果在栈上分配空间,类在离开作用域时会调用析构函数释放空间,此时无法调用私有的析构...

C++中基类的析构函数为什么要用virtual虚析构函数

大家知道,析构函数是为了在对象不被使用之后释放它的资源,虚函数是为了实现多态。那么把析构函数声明为vitual有什么作用呢?直接的讲,C++中基类采用virtual虚析构函数是为了防止内存泄漏。具体地说,如果派生类中...

c++析构函数的调用

// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include using namespace std; class haitao{ private: int ageee; public : int getAgee(){ return ageee;... h

析构函数的作用和用法

析构函数是“反向”的构造函数。它们在对象被撤消(回收)时调用。析构函数的名 称除了最前面的“~”符号外,与类的名称相同。例如,类String的析构函数是~string()。 析构函数通常用于当一个对象不再需要时,完成...

析构函数何时被调用

析构函数何时被调用 析构函数在下边3种情况时被调用: 对象生命周期结束,被销毁时; 主动调用delete ; 对象i是对象o的成员,o的析构函数被调用时,对象i的析构函数也被调用。 第一种情况 #include &...

析构函数的定义

1.析构函数的定义 析构函数:当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统会自动执行析构函数析构函数往往用来做“清理善后”的工作(例如在建立对象时用new开辟了一段内存空间,则在该对象消亡...

java 析构函数

析构函数(destructor)与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统会执行析构函数。在java中,我们一般用不到它,因为 java 有自动内存回收机制,无须程序员手动释放。java ...

为MFC应用程序添加析构函数

这样有些代码想放到主对话框的析构函数中。这时会发现找不到主对话框的析构函数,只能看到构造函数。 这就需要自己来为主对话框添加析构函数。 如: 头文件中添加:virtual ~CConFontChDlg(); 一定要加上virtual...

C++ 析构函数以及 delete 和delete[]的整理

delete和delete[] 的区别: C++告诉我们在回收用 new 分配的单个对象的内存空间的时候用 delete,回收用 new[] 分配的一组对象的内存空间的时候用 delete[]...很多人注意到了这个问题,但是却不清楚为什么要这样做,

为什么基类的析构函数不是虚函数时,就不会调用派生类的析构函数

我知道,基类的析构函数要生命为虚函数,不然用基类指针删除派生类对象时只会调用基类的析构函数,而不会调用派生类的析构函数,从而发生内存泄露。但是为什么会这样?为什么基类析构函数不是虚函数时,就不会调用...

C++析构函数的简单范例

问题:C++析构函数的简单范例 本程序通过VC++ 6.0编译与测试,具体代码如下: #include <iostream> using namespace std; class Destructor { public: Destructor(); //构造函数 ~Destructor(); ...

C++杂谈 为什么需要虚析构函数

1.虚函数:在类的成员函数前面加virtual关键字的函数; 一般把虚函数定义在public区,方便在主函数中调用 如果一个类有一个虚函数,则该类就有一个虚函数列表,所有该类的对象都共享这个虚函数表;(QT调试过程中...

也谈析构:析构函数何时被调用

用google搜索“析构函数”是,google会说“约有81,500项符合 析构函数 的查询结果”,我最近复习c++是有所心得,所以“也”想谈谈“析构函数”。我不想像教科书似的介绍它,而是从它何时被调用来浅谈一下。析构函数...

C++中结构体中的析构函数和构造函数

注意,C++中的结构体是可以有析构函数和构造 函数,而C则不允许。至于联合体,它是不可能有析构函数和构造函数的。本质上,它是一种内存覆盖技术的体现,也就 是说,同一块内存在不同的时刻存储不同的值(可能是...

C++ 默认析构函数

1. 与构造函数一样,假如我们不指定自己的析构函数,那么编译器将为我们创建一个默认析构函数。  析构函数(Destructor)也是一种特殊的成员函数,没有返回值,不需要用户调用,而是在销毁对象时自动执行。与构造...

C++中构造函数与析构函数的调用顺序

C++继承中构造函数、析构函数调用顺序及虚函数的动态绑定 参考2: 构造函数、拷贝构造函数和析构函数的的调用时刻及调用顺序 参考3: C++构造函数与析构函数的调用顺序 2.构造函数、析构函数与拷贝构造...

子类析构时要调用父类的析构函数吗?

析构函数调用的次序是先派生类的析构后基类的析构,也就是说在基类的的析构调用的时候,派生类的信息已经全部销毁了。定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数;析构的时候恰好相反:先调用...

C++虚析构函数

1.1为什么要用虚析构函数? 用new函数建立了一个临时对象,在基类中有虚构函数,并定义了一个指向基类的指针变量。在程序中用带指针参数的delete运算符撤销对象时,会发生一个情况:系统只会执行基类的析构函数,而...

析构函数的作用

析构函数的作用 类的析构函数是为了释放内存资源,析构函数不被调用的话就会造成内存泄漏。 虚析构函数 定义为虚析构函数是为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。 但并不是...

c++中函数前加~

1.析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在...