将析构函数设置为虚函数,是一般的基类的做法。但是这个做法存在一些问题,比如我们可能没有主动的申请堆上空间的操作,那么虚函数的存在,反而增加了维护虚表的负担,因此增加了开销,影响了性能(具体的影响,我还没有分析)。另一方面,在实际应用中,即使存在new甚至malloc这样的申请空间的做法,虚析构函数,...
分类:
其他好文 时间:
2014-10-11 23:47:46
阅读次数:
197
本文讲关于C++的异常的所有东西:
绝对不让异常逃离析构函数
阻止exception逃离析构函数,主要是两个原因:
1 防止在异常处理过程中的栈展开行为时,将调用terminate函数。程序将会结束,有时候其实错误并没有那么严重。
[插入: 什么时候会调用terminate函数呢?]
[回答 : By default, the terminate handler call...
分类:
编程语言 时间:
2014-10-10 23:57:54
阅读次数:
302
45。弄清c++在幕后为你所写,所调用的函数。
如果设置一个空类,c++编译器会声明以下函数:拷贝构造函数,赋值运算符,析构函数,一对析构函数(const和非const)。而如果你没有声明任何构造函数的话,编译器会为你声明一个缺省构造函数。这些函数都是公有的。
编译器生成的缺省构造函数和析构函数实际上什么也不做,生成的析构函数一般是非虚构的,除非继承了一个具有虚析构函数的基类。缺省取地址符只是...
分类:
编程语言 时间:
2014-10-10 04:16:13
阅读次数:
224
引言: 编写智能指针的要点:a) 构造函数接收堆内存b) 析构函数释放内存c) 必要时要禁止值语义。d) 重载*与->两个操作符 1 #ifndef START_PTR_H 2 #define START_PTR_H 3 4 #include 5 using namespace std; 6 ...
分类:
编程语言 时间:
2014-10-10 03:17:04
阅读次数:
211
在MSDN文档里,把Visual C++接口描述如下:
Can inherit from zero or more base interfaces.Cannot inherit from a base class.Can only contain public, pure virtual methods.Cannot contain constructors, destructors, or...
分类:
其他好文 时间:
2014-10-09 18:35:07
阅读次数:
188
第一章 异常处理
1.5清理
1.5.1 资源管理
如果一个对象的构造函数在执行过程中抛出异常,那么这个对象的析构函数就不会被调用。
Rawp.cpp
/**
* 书本:【ThinkingInC++】
* 功能:资源管理
* 时间:2014年10月8日20:19:03
* 作者:cutter_point
*/
#include
#include
using namespace s...
分类:
编程语言 时间:
2014-10-09 15:38:08
阅读次数:
235
深入C++ new/delete,malloc/free解析
1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存
2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由malloc/free是库函数而不是运算符,不在编...
分类:
编程语言 时间:
2014-10-09 15:29:28
阅读次数:
153
5.1 子系统的启动和终止 游戏中各个子系统间有相互依赖关系,有确定的启动和终止次序,为游戏引擎中主要子系统定义单例类(singleton class)(通常称为管理器)。我们明确为各个单例管理器类定义启动和终止函数,以此取代建构和析构函数。这种方法还有别的实现方式,例如,用一个全局的优先队列来记....
分类:
其他好文 时间:
2014-10-09 14:04:03
阅读次数:
174
一、构造函数为什么不能为虚函数1. 从存储空间角度,虚函数相应一个指向vtable虚函数表的指针,这大家都知道,但是这个指向vtable的指针事实上是存储在对象的内存空间的。问题出来了,假设构造函数是虚的,就须要通过 vtable来调用,但是对象还没有实例化,也就是内存空间还没有,怎么找vtable...
分类:
其他好文 时间:
2014-10-08 23:38:37
阅读次数:
148
SetProcessWorkingSetSize减少内存占用系统启动起来以后,内存占用越来越大,使用析构函数、GC.Collect什么的也不见效果,后来查了好久,找到了个办法,就是使用 SetProcessWorkingSetSize函数。这个函数是Windows API 函数。下面是使用的方法:C...
分类:
其他好文 时间:
2014-10-08 16:34:15
阅读次数:
158