虚函数、抽象类及虚基类

来源:互联网 发布:php autoload 编辑:程序博客网 时间:2024/06/05 22:46

虚函数、抽象类及虚基类

虚函数及抽象类:

派生类经常(但不总是)覆盖它继承的虚函数。如果没有覆盖,派生类会直接继承其在基类中的版本。

派生类可以在它覆盖的函数前使用virtual关键字,但不是非得这么做。

C++11允许派生类使用override关键字,显式地注明它重写了基类中的某个虚函数。

微笑常见的不能声明为虚函数的有:非成员函数(含友元函数);静态成员函数;构造函数。

1.为什么C++不支持普通函数和友元函数为虚函数?

它们不能被继承。

2.为什么C++不支持构造函数为虚函数?

构造函数不能被继承,因而不能声明为virtual函数。

3.为什么C++不支持静态成员函数为虚函数?

语法规定。


 虚基类

多继承时,多个基类中的同名成员在派生类中由于标示符不唯一而出现二义性。可通过类的作用域标示符或重载解决问题。
在多继承中,当派生类的一些直接基类又是从另一个共同基类派生而来时,会出现间接二义性。
解决办法:
虚基类。
普通的消除二义性办法。

2 0