摘要:
面向对象编程有三个要素:数据抽象、继承以及动态绑定。 编译注意点: 函数ostream& operator<<(ostream&,const Expr&)要访问class Expr_node的print,但是print是protected的。 所以要把函数ostream& operator<<(os 阅读全文
posted @ 2019-11-01 19:37
耶
阅读(167)
评论(0)
推荐(0)
摘要:
上一章的句柄类技术有一个缺点:为了把句柄绑到类T的对象上,必须定义一个具有类型T的成员的新类。 解决方法:将引用计数从数据中分离出来。 这个句柄类的核心是: 一、代理我们需要控制的类 二、将引用计数抽象为类,并包含这个类的一个对象 #include <iostream> using namespac 阅读全文
posted @ 2019-11-01 17:25
耶
阅读(149)
评论(0)
推荐(0)
摘要:
创建代理将会复制所代理的对象,就像复制代理一样。 目标:如何避免频繁的复制对象。 方法:使用句柄类(handle)。它允许在保持代理的多态行为的同事,还可以避免进行不必要的复制。 Handle类 的对象通常被绑定到它们所控制的类的对象上,这就是它可以避免进行不必要复制的原因。 思考上一句话,你就会发 阅读全文
posted @ 2019-11-01 16:43
耶
阅读(217)
评论(0)
推荐(0)
摘要:
目标:设计一个C++容器类,使它有能力包含类型不同而彼此相关的对象 思考:容器通常只能包含一种类型的对象,所以很难再容器中存储对象本身。存储指向对象的指针的话,增加了内存分配的额外负担 方法:定义名为代理(surrogate)的对象来解决该问题。代理运行起来和它所代表的对象基本相同,但是运行将整个派 阅读全文
posted @ 2019-11-01 15:10
耶
阅读(111)
评论(0)
推荐(0)