class B
{
public:
B(){
cout << "构造函数" << endl;
}
B(const B &b)
{
cout << "复制构造函数" << endl;
}
~B()
{
cout << "析构函数" << endl;
}
};
B play(B b)
{
return b;
}
main函数输入如下代码:
{
B b...
分类:
其他好文 时间:
2015-04-23 11:06:48
阅读次数:
125
1. 纯虚类特点 纯虚类不能实例化;class AES{public: virtual ~AES()=0;};AES::~AES(){} class BES:public AES{public: virtual ~AES()=0;};int main(){ AES *p=new BES; ...
分类:
其他好文 时间:
2015-04-22 23:34:54
阅读次数:
134
析构函数执行时先调用派生类的析构函数,其次才调用基类的析构函数。如果析构函数不是虚函数,而程序执行时又要通过基类的指针去销毁派生类的动态对象,那么用delete销毁对象时,只调用了基类的析构函数,未调用派...
分类:
其他好文 时间:
2015-04-22 18:53:27
阅读次数:
151
章节回顾:《Effective C++》第1章 让自己习惯C++-读书笔记《Effective C++》第2章 构造/析构/赋值运算(1)-读书笔记《Effective C++》第2章 构造/析构/赋值运算(2)-读书笔记《Effective C++》第3章 资源管理(1)-读书笔记《Effecti...
分类:
编程语言 时间:
2015-04-22 13:47:13
阅读次数:
188
这一节内容,主要是介绍一下析构函数。
就像创建对象时将会调用构造函数一样,当要删除一个对象时,程序就会调用析构函数。每一个类都只能有一个析构函数。析构函数没有返回类型,也没有参数。析构函数的名称是在类名称前面加上~。
如果构造函数使用new来分配内存,则必须提供使用delete的析构函数来释放这些内存。
下述情况下,析构函数将会被调用:
1、如果对象是动态变量,则当执行完定义该...
分类:
其他好文 时间:
2015-04-22 11:34:04
阅读次数:
106
【项目2-我的数组类】
下面的程序,因为存在指针类型的数据成员,需要能完成深复制的构造函数。请补充完整构造函数和析构函数(其他不必动)。其中,构造函数要完成下面三个任务:
(1)为各成员函数赋值,按照深复制原则,其中arrayAddr应该是为保存数据新分配的连续空间的首地址;
(2)MyArray(int *a, int n)中,要将a指向的数组中的数值,逐个地复制到新分配的arrayAdd...
分类:
编程语言 时间:
2015-04-22 09:37:01
阅读次数:
115
《Effective C++》第五章:实现
尽可能延后变量定义式的出现时间。只有变量在恰好要使用之前定义,程序的可读性往往会得到提高,因为这样不容易忘记变量说代表的意思。另一方面,这样做可以提高程序性能,如果不需要一个变量时却要为它分配、释放空间,调用构造、析构函数,获取、释放资源……这,真是太浪费了。补充一点,声明式并不会做这些事情,所以可以考虑用声明式替换定义式以尽量延后变量的定义。
尽量少做转...
分类:
编程语言 时间:
2015-04-22 09:35:15
阅读次数:
135
章节回顾:《Effective C++》第1章 让自己习惯C++-读书笔记《Effective C++》第2章 构造/析构/赋值运算(1)-读书笔记《Effective C++》第2章 构造/析构/赋值运算(2)-读书笔记《Effective C++》第8章 定制new和delete-读书笔记条款0...
分类:
编程语言 时间:
2015-04-21 12:40:15
阅读次数:
169
《Effective C++》第三章:资源管理
以对象管理资源。一份资源,可能是一片内存,可能是一个锁,当客户申请后需要手动释放才是合理的,那么最好在获得这份资源的时候,就立刻把它放到一个对象里(RAII技术),然后在对象的析构函数里释放它。这样释放操作就不会被遗忘了,并且,就算在使用资源类的语境中有语句抛出异常,也能确保资源得到正确的释放。
在资源管理类中小心coping行为。有的资源是不支持co...
分类:
编程语言 时间:
2015-04-21 11:16:58
阅读次数:
167
《Effective C++》第二章:构造/析构/赋值运算
C++默认编写的函数。C++编译器如果没有发现以下函数,就会为类生成一份默认版本的:
1) default构造函数
2) default析构函数
3) copy构造函数
4) copy assignment操作符(=运算符)
前两个函数并不总是产生,它只在编译器需要的时候才产生出来。后两个函数只保证以bitwise语义拷贝...
分类:
编程语言 时间:
2015-04-21 11:16:23
阅读次数:
118