首页 > 试题广场 >

有以下一段代码:#include using namespa

[不定项选择题]
有以下一段代码:
#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;
}
编译时会产生错误的语句有:
  • 语句1
  • 语句2
  • 语句3
  • 语句4
不是虚函数也可以吗
发表于 2020-09-08 11:53:25 回复(0)
更多回答
派生类和基类函数同名了,基类函数会被隐藏。
发表于 2020-08-22 10:31:14 回复(0)
函数同名,参数不同,virtual可有可无-->隐藏 函数同名,参数相同,无virtual-->隐藏,有virtual-->覆盖
发表于 2021-12-13 12:18:47 回复(2)
关于语句4,这里有个小坑需要注意一下,其实考察的也是c和c++在默认类型上的区别: 1.在c语言中,int f()表示返回值为int,接受任意参数的函数;而f(void)表示返回值为int的无参函数。 2.在c++中,int f()和int f(void)具有相同的意义,即都代表返回值为int的无参函数;而如果继续在c++中写出f(void)这样的代码,则会编译报错(因为c语言中的默认类型在c++中是不合法的)。
发表于 2022-04-17 13:21:33 回复(0)
个人感觉语句三也没错吧

发表于 2020-08-04 11:15:21 回复(5)
语句一不会产生二义性吗
发表于 2022-04-03 22:02:35 回复(2)
不是,咱就是说,你单选标什么多选。
发表于 2023-10-13 12:54:48 回复(0)
发表于 2023-02-07 10:31:18 回复(0)
派生类和基类函数同名了,基类函数会被隐藏。
发表于 2022-10-05 20:05:39 回复(0)
语句2没问题? 类A哪有带参数的run?
发表于 2021-01-14 22:12:41 回复(2)
应该就是B没有此方法.IDE:Too few arguments to function call, expected 1, have 0; did you mean 'A::run'?
发表于 2023-01-26 16:39:30 回复(0)
语句三个人感觉是一个声明   本身没错  错的应该是后面语句4的调用会报错
发表于 2021-10-12 07:44:34 回复(3)