- 定义为virtual的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为虚函数。
- 继承层次的根类一般都要定义虚析构函数。
- 除了构造函数外,任意非static成员函数都可以是虚函数。保留字virtual只在类内部的成员函数声明中出现,不能用在类定义体外部出现的函数定义上。
- 派生类只能通过派生类对象访问其基类的protected成员,派生类对其基类类型对象的protected成员没有特殊访问权限。
- 引用和指针的静态类型和动态类型可以不同,这是C++用以支持多态性的基石。
- 无论派生列表中是什么访问标号,所有继承Base的类对Base中的成员具有相同的访问。派生访问标号将控制派生类的用户对从Base继承而来的成员的访问。
- 用struct保留字和class保留字定义类的唯一区别在于:默认的成员保护级别和默认的派生保护级别。struc派生时t默认的保护级别为public,class派生时默认的保护级别为private。
- 友元关系不能继承。
- 编译器不会自动将派生类型对象转换为基类类型对象。
- 构造函数和复制控制成员不能继承,每个类定义自己的构造函数和复制控制成员。
- 一个类只能初始化自己的直接基类。
- 如果派生类定义了自己的复制构造函数,该复制构造函数一般应显式使用基类复制构造函数初始化对象的基类部分。
- 赋值操作符与复制构造函数类似:如果派生类定义了自己的赋值操作符,则该操作必须对基类部分进行显式赋值。
- 析构函数的工作与复制构造函数和赋值操作符不同:派生类析构函数不负责撤销基类对象的成员。编译器总是显式调用派生类对象基类部分的析构函数。每个析构函数只负责清除自己的成员。
- 在复制控制成员中,只有析构函数应定义为虚函数,构造函数不能定义为虚函数。
- 如果在构造函数或者析构函数中调用虚函数,则运行的是为构造函数或析构函数自身类型定义的版本。
- 在继承情况下,派生类的作用域嵌套在基类作用域中。如果不能在派生类作用域中确定名字,就在外围基类作用域中查找该名字。
- 含有(或继承)一个或多个纯虚函数的类是抽象基类。除了作为抽象基类的派生类的对象的组成部分,不能创建抽象类型的对象。
【c++Primier】第十五章 面向对象编程
最新推荐文章于 2024-04-08 17:12:06 发布