C++ Primer——面向对象程序设计

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的
发布了14 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Luncles/article/details/104613137