有如下程序: #include<iostream> using namespace std; class Base { public: int m,n; }; class Derived1 : Base{}; class Derived2 : public Derived1 { public: void SetMN( int M, int N) {m=M; n=N} void GetSumMN() {return (m+n);} }; int main() { Derived2 objD; objD.SetMN(3,4); cout<<”M+N=”<<objD.m+objD.n<<endl; return 0; } 编译时,只有“cout<<”M+N=”<<objD.m+objD.n<<endl;”有语法错误,程序的其他地方没有语法错误。请判断下划线处使用的关键字是什么。
时间: 2024-01-17 11:03:00 浏览: 130
C++与操作系统等面试题8
在下划线处使用的关键字应该是 `int`,因为函数 `GetSumMN()` 声明的返回值类型为 `void`,而在函数体内部使用了 `return (m+n);` 语句,这会导致编译错误。如果我们将 `void` 修改为 `int`,即声明函数返回值类型为int,就可以正确编译和运行程序。
修改后的程序如下:
```
#include<iostream>
using namespace std;
class Base {
public:
int m,n;
};
class Derived1 : Base {};
class Derived2 : public Derived1 {
public:
void SetMN(int M, int N) {
m = M;
n = N;
}
int GetSumMN() {
return (m + n);
}
};
int main() {
Derived2 objD;
objD.SetMN(3, 4);
cout << "M+N=" << objD.GetSumMN() << endl;
return 0;
}
```
运行结果为:
```
M+N=7
```
阅读全文