第15章 面向对象编程(13)
15.6 纯虚函数
在函数列表后面写上=0以指定纯虚函数。
将函数定义为纯虚函数(pure virtual function)能够说明,该函数为后代类型提供了可以覆盖的接口,但是这个类中的版本绝不会调用。重要的是,用户将不能创建含有纯虚函数的类型的对象。
含有(或继承)一个或多个纯虚函数的类是抽象基类(abstract base class)。除了作为抽象基类的派生类的对象的组成部分,不能创建抽象类型的对象。
class Base
{
public:
virtual int Get() =0;
};
class Child: public Base
{
public:
int Get()
{
return 10;
}
};
Base &c1=Child();
cout<<c1.Get()<<endl; //10
15.7 容器与继承
因为派生类对象在赋值给基类对象时会被“切掉”,所以容易以通过继承相关的类型不能很好地融合。
唯一可行的选择是使用容器保存对象的指针。这个策略可行,但代价是需要用户面对管理对象和指针的问题,用户必须保证只要容器存在,被指向的对象就存在。如果对象时动态分配的,用户必须保证在容器消灭时适当地释放对象。原因是:引用类型与指针的静态类型与动态类型可以不同,多态性的基石。
15.8 句柄类与继承
C++面向对象不能使用对象支持面向对象编程,相反,必须使用指针或引用。
句柄类存储和管理基类指针。指针所指对象的类型可以变化,它既可以指向基类类型对象又可以指向派生类型对象。用户通过句柄类访问继承层次的操作。因为句柄类使用指针执行操作,虚成员的行为将在运行时根据句柄实际绑定的对象的类型而变化因此,句柄的用户可以获得动态行为但无需操心指针的管理。
摘自 xufei96的专栏
补充:软件开发 , C++ ,