摘要: 创建代理将会复制所代理的对象,就像复制代理一样。 目标:如何避免频繁的复制对象。 方法:使用句柄类(handle)。它允许在保持代理的多态行为的同事,还可以避免进行不必要的复制。 Handle类 的对象通常被绑定到它们所控制的类的对象上,这就是它可以避免进行不必要复制的原因。 思考上一句话,你就会发 阅读全文
posted @ 2019-11-01 16:43 耶 阅读(223) 评论(0) 推荐(0)
摘要: 目标:设计一个C++容器类,使它有能力包含类型不同而彼此相关的对象 思考:容器通常只能包含一种类型的对象,所以很难再容器中存储对象本身。存储指向对象的指针的话,增加了内存分配的额外负担 方法:定义名为代理(surrogate)的对象来解决该问题。代理运行起来和它所代表的对象基本相同,但是运行将整个派 阅读全文
posted @ 2019-11-01 15:10 耶 阅读(119) 评论(0) 推荐(0)
摘要: 现在开始写类吧! 认真理解下面的每一句话,深入思考,让你的类是有思想的类。 你的类需要一个构造函数吗? —— 构造函数是用来隐藏内部工作方式的。 你的数据成员是私有的吗? 你的类需要一个无参的构造函数吗? 是不是每个构造函数初始化所有的数据成员? 类需要析构函数吗? 类需要一个虚析构函数吗? #in 阅读全文
posted @ 2019-10-31 22:58 耶 阅读(118) 评论(0) 推荐(0)
摘要: C++对动态分配内存的管理 有了极大的优化,在接下来几章的代码里有体现,请仔细阅读和思考代码。 C++ 抽象数据类型。 C++就是写类。类能够独立工作,没有内存泄漏,那么在遇到这个类本质的问题时,就使用这个类。 要让C++程序可靠,在定义C++类时就要多运用思想。 抽象!抽象!抽象! 类!类!类! 阅读全文
posted @ 2019-10-31 21:56 耶 阅读(98) 评论(0) 推荐(0)
摘要: #include <stdio.h> class Trace{public: void print(const char* s) { printf("%s\n", s); }}; int main(int argc, char const *argv[]){ Trace t; t.print("be 阅读全文
posted @ 2019-10-31 21:45 耶 阅读(133) 评论(0) 推荐(0)