Protected关键字和抽象基类
学习人:HSLY
学习书籍:C++ Primer Plus(第四版)中文版
撰写日期:2004-7-11
章节:13.5 P418
Protected关键字
private和protected之间的区别只有在基类派生的类中才会表现出来。派生类的成员可以直接访问基类的保护成员,当不能直接访问基类的私有成员。因此,对于外部世界来说,保护成员的行为和私有成员相似;但是对于派生类来说,保护成员的行为与公有成员相似。
抽象基类(Abstract base class, ABC)
比如从Ellipse(椭圆)和Circle(圆)类抽象出它们的共性,将这些特性放到一个抽象基类中。然后从该ABC派生出Circle和Ellipse类。这样,便可以使用基类指针数组同时管理Circle和Ellipse对象(即可是使用多态方法)
C++通过使用纯虚函数(pure virtual function)提供为实现的函数。纯虚函数声明结尾处为=0:
virtual double Area() const = 0 ; //这个就是纯虚函数
当类声明中包含纯虚函数时,则不能创建该类的对象。这里的理念是:包含纯虚函数的类只能做基类,要成为真正的抽象基类,必须至少包含一个纯虚函数,原型中的=0是虚拟函数成为了纯虚函数。
实际应用注意事项:使用抽象基类实施接口原则
可以将抽象基类看作是一重必须实施的接口。抽象基类要求派生类覆盖其纯虚函数――迫使派生类遵循ABC所有设置的接口规则。这种模型在基于组建的编程模式很常见,在这样情况下,使用ABC使得组件设计人员能够制定“接口约定”,这样确保了ABC派生得所有组件都至少支持ABC指定的功能。