什么函数不能声明为虚函数?

构造函数、普通函数、inline函数、静态成员函数、友元函数

1、构造函数:因为对象在运行初始化的过程中通过构造函数填充对象前四个字节为虚函数表指针,所以说构造函数是不可以给我虚函数的。

2、普通函数:在实现多态调用虚函数的原理中,第二步是通过ecx寄存器传递this指针,然而普通函数没有this指针,所以不可以作为虚函数。而且普通函数是不可以被重写的。

3、inline函数:内联函数是在编译期间展开的,相当于C语言的宏函数。虚函数需要在运行时动态绑定,所以不可以。

4、静态成员函数:静态成员函数没有this指针,没有办法调用虚函数,所以不可以

5、友元函数:友元函数不属于类的成员函数,原有和普通函数差不多。

你可能感兴趣的:(C/C++)