空类缺省有哪些成员函数
- 构造函数
- 析构函数
- 拷贝构造函数
- 赋值函数(operator=)
类的继承中使用虚函数来重写(override)基类中的函数。
哪些类中的成员函数不能声明为虚函数
- 静态成员函数
- 内联函数
- 构造函数
-
静态成员函数不能定义为虚函数
因为静态成员函数没有this指针,并且静态成员函数可以通过类名来访问。
又因为虚函数是放在对象的虚表里面的,同一个类中的所有对象虽然共用同一张虚表,但是类名无法找到虚表。 -
内联函数不能定义为虚函数
因为内联函数没有地址,而虚表里面存放的就是虚函数的地址。 -
构造函数不能定义为虚函数
因为虚函数是存放在对象的虚表里面,如果将构造函数定义为虚函数,则构造函数也必须存放在虚表里面,但是此时对象都还没有创建也就没有所谓的虚表。
纯虚函数
纯虚函数的形式如下:
virtual returnType function() = 0;