15.8. 句柄类与继承
1、C++ 中面向对象编程的一个颇具讽刺意味的地方是,不能使用对象支持面向对象编程,相反,必须使用指针或引用。
2、但是,使用指针或引用会加重类用户的负担。
3、C++ 中一个通用的技术是定义包装(cover)类或句柄类。句柄类存储和管理基类指针。指针所指对象的类型可以变化,它既可以指向基类类型对象又可以指向派生类型对象。用户通过句柄类访问继承层次的操作。因为句柄类使用指针执行操作,虚成员的行为将在运行时根据句柄实际绑定的对象的类型而变化。因此,句柄的用户可以获得动态行为但无须操心指针的管理。
4、包装了继承层次的句柄有两个重要的设计考虑因素:
a):像对任何保存指针(第 13.5 节)的类一样,必须确定对复制控制做些什么。包装了继承层次的句柄通常表现得像一个智能指针(第 13.5.1 节)或者像一个值(第 13.5.2 节)。
b):句柄类决定句柄接口屏蔽还是不屏蔽继承层次,如果不屏蔽继承层次,用户必须了解和使用基本层次中的对象。
探讨了C++中使用句柄类来管理基类指针的方法,介绍句柄类如何提供动态行为同时减轻用户管理指针的负担,并讨论了复制控制及接口设计的考量。
508

被折叠的 条评论
为什么被折叠?



