用智能指针可以简化内存管理。以树为例,如果用普通指针,通常是在插入新节点时用new,在析构函数中调用delete;但有了unique_ptr类型的智能指针,就不需要在析构函数中delete了,因为当unique_ptr类型的指针P生命结束时(比如对于局部变量,程序执行到局部变量的作用域范围之外).....
分类:
编程语言 时间:
2014-08-31 15:38:31
阅读次数:
246
转自:来自《JavaScript 标准参考教程(alpha)》,by 阮一峰 jQuery插件开发 所谓“插件”,就是用户自己新增的jQuery实例对象的方法。由于该方法要被所有实例共享,所以只能定义在jQuery构造函数的原型对象(prototype)之上。对于用户来说,把一些常用的操作封装...
分类:
Web程序 时间:
2014-08-31 13:14:41
阅读次数:
269
几天前组内一个同事做技术分享,其中谈到一个问题,如果new出一个对象但是delete的时候,如果写成delete[]效果会如何。其中有同事在实际测试中发现如果是debug版本会抛异常,但是Release会反复执行该对象的析构函数。debug版本拋异常很容易理解,本来这么写就不对的,但是Release...
分类:
其他好文 时间:
2014-08-31 10:26:31
阅读次数:
175
一、缺省构造函数的调用关系通过下面的例子,我们来看一下基类与派生的构造函数的调用顺序。创建时先基类后派生类。销毁时先派生类后基类。#include #include using namespace std;class CBase { string name; int age;public...
分类:
其他好文 时间:
2014-08-31 00:27:40
阅读次数:
328
javascript中的每个对象都有prototype属性,Javascript中对象的prototype属性的解释是:返回对象类型原型的引用。这个属性非常有用:为一个特定类声明通用的变量或者函数。你不需要显式地声明一个prototype属性,因为在每一个构造函数中都有它的存在。例如:functio...
分类:
Web程序 时间:
2014-08-31 00:25:40
阅读次数:
176
在C++中,赋值和拷贝是不同的,1)拷贝构造函数是对未初始化的内存进行初始化操作2)而赋值是对现有的已经初始化的对象进行操作。(这里我对“已经初始化”的理解是已经调用了构造函数,并且构造函数体可以未执行,只要调用到即可),赋值函数应该给所有数据成员都初始化。3)重点:包含动态分配成员的类应提供拷贝构...
分类:
其他好文 时间:
2014-08-31 00:22:30
阅读次数:
372
1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/...
分类:
其他好文 时间:
2014-08-30 23:01:10
阅读次数:
193
构造函数可以抛出异常。C++标准指明析构函数不能、也不应该抛出异常。那么如果对象在运行期间出现了异常,C++异常处理模型有责任清除那些由于出现异常所导致的已经失效了的对象(也即对象超出了它原来的作用域),并释放对象原来所分配的资源,这就是调用这些对象的析构函数来完成释放资源的任务,所以从这个意义上说...
分类:
其他好文 时间:
2014-08-30 22:56:40
阅读次数:
222
拷贝构造函数被调用的时机:1.当用类的一个对象去初始化该类的另一个对象(或引用)时系统自动调用拷贝构造函数实现拷贝赋值。2.若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。3.当函数的返回值是类对象时,系统自动调用拷贝构造函数。需要注意的是,赋值并不会调用复制构造函数,赋...
分类:
其他好文 时间:
2014-08-30 22:55:50
阅读次数:
243
两者区别;1malloc必须检查是否分配成功。New不需要,要不成功要不异常2malloc不对申请的变量初始化,而new可以对类类型运用构造函数进行初始化3对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函...
分类:
其他好文 时间:
2014-08-30 21:36:10
阅读次数:
291