1、在C++中,基类将类型相关的函数与派生类不做改变直接继承的函数区分对待。对于某些函数,基类希望它的派生类各自定义适合自身的版本,此时基类就将这些函数声明成虚函数(virtual function)。
2、在C++中,当我们使用基类的引用(或指针)调用一个虚函数时将发生动态绑定。
3、关键字virtual只能出现在类内部的声明语句之前而不能用于类外部的函数定义。如果基类把一个函数声明成虚函数,则该函数在派生类中隐式地也是虚函数。
4、派生类可以继承定义在基类中的成员,但是派生类的成员函数不一定有权访问从基类继承而来的成员。和其他使用基类的代码一样,派生类能访问公有成员,而不能访问私有成员。不过在某些时候基类中还有这样一类成员,基类希望它的派生类有权访问该成员,同时禁止其他用户访问。我们用protected访问运算符说明这样的成员。
5、如果我们想将某个类用作基类,则该类必须定义而非仅仅声明。
6、在定义一个类时,如果不希望其他类继承它,或者不想考虑它是否适合作为一个基类。为了实现这个目的,C++11新标准提供了一种防止继承发生的方法,即在类名后跟一个关键字final:
class NoDerived final {}; //NoDerived不能作为基类
class Base{};
class Last final : Base{}; //Last不能作为基类
class Bad : NoDerived { }; //错误:NoDerived是final的
class Bad2 : Last { }; //错误:Last是final的
Luncles 发布了14 篇原创文章 · 获赞 6 · 访问量 1万+ 私信 关注