/*当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。简而言之,对象是由“底层向上”开始构造的。因为,构造函数一开始构造时,总是要调用它的基类的构造函数,然后才开始执行其构造函数体,调用直接基类构造函数时,如果...
分类:
编程语言 时间:
2015-03-20 10:37:30
阅读次数:
165
代码一、#include using namespace std;class Base{public: Base(){}; ~Base() { cout using namespace std;class Base{public: Base(){}; vi...
分类:
编程语言 时间:
2015-03-19 11:26:02
阅读次数:
147
6.2.2 使用类创建对象完成某个类的声明并且定义其成员函数之后,这个类就可以使用了。一个定义完成的类就相当于一种新的数据类型,我们可以用它来定义变量,也就是创建这个类所描述的对象,表示现实世界中的各种实体。比如前面完成了Teacher类的声明和定义,就可以用它来创建一个Teacher类的对象,用它...
分类:
编程语言 时间:
2015-03-18 13:42:16
阅读次数:
158
1.CClientDC(客户区设备上下文)用于客户区的输出它在构造函数中封装了GetDC(),在析构函数中封装了ReleaseDC()函数。一般在响应非窗口重画消息(如键盘输入时绘制文本、鼠标绘图)绘图时要用到它。2.CPaintDC用于响应窗口重绘消息(WM_PAINT)是的绘图输出。CPaint...
分类:
其他好文 时间:
2015-03-18 10:15:20
阅读次数:
124
主要是,感觉原来的链表例程通过Node的分配形成了链表,但是没有自动消除Node的办法比较危险,一旦在clear()之前把链表赋了其它值就内存泄漏了。所以改了析构函数,自动清理分配出来的内存。既然改了析构同时就要改拷贝合成与拷贝赋值。然后还给链表加了个尾指针,否则每次插入都要O(N)的时间真的很蛋疼...
分类:
其他好文 时间:
2015-03-17 20:11:10
阅读次数:
135
一、new 是c++中的操作符,malloc是c 中的一个函数malloc与free是C++/C语言的标准库函数(要用到malloc函数,必须包含malloc.h),new/delete是C++的运算符。二、new不仅分配内存,而且会调用构造函数。同理,delete会调用析构函数new可以认为是ma...
分类:
其他好文 时间:
2015-03-17 12:20:47
阅读次数:
114
看完了对象的构造行为和内存释放前的对象的析构行为,我们现在来看看内存的配置和释放。对象构造前的空间分配和析构后的空间释放,定义在头文件中。其设计思想是:向system heap要求空间。考虑多线程状态。考虑内存不足时的应变措施。考虑过多“小额区块”可能造成的内存碎片问题。C++的内存配置基本操作时:...
分类:
其他好文 时间:
2015-03-17 00:47:09
阅读次数:
135
感觉auto_ptr还是存在一些不足的,效率十分低,而且丢失了一般指针方便常用的操作,如++,--等,auto_ptr只重载了=,*,->这几个操作符,所以使用很不方便。
一、说明:int *a = NULL;delete a;//do nothing
应此auto_ptr的析构函数是这样子的:
~auto_ptr()
{ // destroy the...
分类:
其他好文 时间:
2015-03-15 09:36:50
阅读次数:
149
05.了解C++默默编写并调用哪些函数
编译产生的析构函数时non-virtual,除非这个类的基类析构函数为virtual成员变量中有引用和const成员时,无法自动生成copy assignment函数基类将copy assignment操作符声明为private时,编译器拒绝为其derived classes生成一个copy assignment操作符。
06.若不想使用编译器自动生...
分类:
编程语言 时间:
2015-03-14 23:16:19
阅读次数:
216
1。虚析构函数: 构造函数不能是虚函数。建立一个派生类对象时,必须从类 层次的根开始,沿着继承路径逐个调用基类的构造函数 析构函数可以是虚的。虚析构函数用于指引 delete 运算符正 确析构动态对象2. 定义了基类虚析构函数,基类指针指向的 派生类动态对象也可以正确地用delete析构...
分类:
编程语言 时间:
2015-03-13 23:46:06
阅读次数:
189