题目链接: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-->覆盖
编译结果
代码:修改
编译运行结果: