句柄类作用主要有两个:
- 支持面向对象编程,实现多态性质;
- 减少头文件的编译依赖关系,让文件间的编译更加独立。
句柄类存储和管理基类指针,指针既可以指向基类类型对象又可以指向派生类型对象。用户通过句柄类访问继承层次的操作,用户可以获得动态行为,同时能够确保自动正确的销毁动态分配的对象,防止内存泄露。《C++ Primer》15.7节中用购物篮的例子说明了C++不能通过对象支持多态,而必须使用指针或引用。如果multiset保存基类的对象:派生类对象只有基类部分保存下来,而派生类部分被切掉;如果保存派生类的对象,基类对象无法有效转换为派生类对象。
在Effective C++类的实现中条款22说明了为了实现接口和实现的分离,将对象的实现隐藏在指针身后,这样就能减少头文件的编译依赖关系。实现技