题目链接:https://www.nowcoder.com/questionTerminal/15d70a99836e4bdaab6c90a8e32c5c54

#include <iostream>
using namespace std;
class A {
public :
    void run(void) {
        cout << "run()" << endl;
    }
    void run(int a){
        cout << "run(A)" << endl;
    }
};
class B: public A {
public :
    void run(int a) {
        cout << "run(B)" << endl;
    }
};
int main(void)
{
    B b;
    b.run(0);//语句1
    b.A::run(1);//语句2
    b.run();//语句3
    b.A::run();//语句4
    return 0;
}

    
    
    
    
    

这个代码运行时main函数中,会出错的是语句:语句几?

答案:语句3

解析:来自做过该题的网友解析

a.当派生类 和基类同名时,派生类会函数会覆盖基类函数

b.函数同名,参数不同,virtual可有可无-->隐藏 函数同名,参数相同,无virtual-->隐藏,有virtual-->覆盖 alt

编译结果 alt

代码:修改 alt

编译运行结果: alt