20180601 虚函数

关于虚函数的描述正确的是()
派生类的虚函数与基类的虚函数具有不同的参数个数和类型
内联函数不能是虚函数
派生类必须重新定义基类的虚函数
虚函数可以是一个static型的函数

正确答案: B   你的答案: C (错误)

  • 题目有问题的。正确应该是这样的,虚函数是为了实现动态绑定,不能声明为虚函数的有:
    1、静态成员函数; 2、类外的普通函数; 3、构造函数; 4、友元函数
    此外,还有一些函数可以声明为虚函数,但是没有意义,但编译器不会报错,如:
    1、赋值运算符的重载成员函数: 因为复制操作符的重载函数往往要求形参与类本身的类型一致才能实现函数功能,故形参类型往往是基类的类型,因此即使声明为虚函数,也把虚函数当普通基类普通函数使用。
    2、内联函数:内联函数目的是在代码中直接展开(编译期),而虚函数是为了继承后能动态绑定执行自己的动作(动态绑定),因此本质是矛盾的,因此即使内联函数声明为虚函数,编译器遇到这种情况是不会进行inline展开的,而是当作普通函数来处理。因此声明了虚函数不能实现内敛的,即内敛函数可以声明为虚函数,但是毫无了内联的意义
原文地址:https://www.cnblogs.com/kxzh/p/9150810.html