虚函数、抽象类及虚基类
2014-03-21 20:25
134 查看
虚函数、抽象类及虚基类
虚函数及抽象类:
派生类经常(但不总是)覆盖它继承的虚函数。如果没有覆盖,派生类会直接继承其在基类中的版本。派生类可以在它覆盖的函数前使用virtual关键字,但不是非得这么做。
C++11允许派生类使用override关键字,显式地注明它重写了基类中的某个虚函数。
常见的不能声明为虚函数的有:非成员函数(含友元函数);静态成员函数;构造函数。
1.为什么C++不支持普通函数和友元函数为虚函数?
它们不能被继承。
2.为什么C++不支持构造函数为虚函数?
构造函数不能被继承,因而不能声明为virtual函数。
3.为什么C++不支持静态成员函数为虚函数?
语法规定。
虚基类
多继承时,多个基类中的同名成员在派生类中由于标示符不唯一而出现二义性。可通过类的作用域标示符或重载解决问题。在多继承中,当派生类的一些直接基类又是从另一个共同基类派生而来时,会出现间接二义性。
解决办法:
虚基类。
普通的消除二义性办法。
相关文章推荐
- 虚基类 、虚函数、 纯虚函数和抽象类
- 虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承
- 虚基类,虚函数,纯虚函数,抽象类的区别与联系
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- C++ 虚基类、虚函数、纯虚函数、抽象类
- 虚函数、虚基类、抽象类
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- 171228—虚继承&虚基类、虚函数、纯虚函数&抽象类 这一家人
- C++ 虚函数、纯虚函数、抽象类、接口、虚基类
- 基类、派生类、虚基类、虚函数、虚析构、纯虚函数、抽象类
- C++的抽象类、虚函数、虚基类和java的抽象类和接口
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- 虚基类,抽象类,虚函数,纯虚函数,virtual
- 虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承
- 虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- 关于基类、派生类、对象、指针和虚函数、多态、 静态绑定、 动态绑定 纯虚函数、抽象类
- 虚函数、纯虚函数、虚基类、抽象类、虚函数继承、虚继承
- 二义性、虚函数、纯虚函数、虚基类、抽象类、基类对象与派生类对象之间赋值兼容原则