using namespace std; class A{ public: int val; A(int n=0){val=n;} A & getObj1(){return *this;} int getObj2(){return val;} }; int main() { A a,b(2),c[2]={10}; cout<<a.val<<endl; cout<<b.val<<endl; cout<<c[0].val<<endl; a.getObj1()=5; cout<<a.val<<endl; cout<<b.getObj2()<<endl; return 0; }结果是什么
时间: 2023-10-30 11:10:14 浏览: 23
这段代码的输出结果是:
```
0
2
10
5
2
```
解释如下:
首先定义了一个类 `A`,其中有一个成员变量 `val` 和三个成员函数 `A(int n=0)`(构造函数)、`getObj1()` 和 `getObj2()`。其中,`getObj1()` 返回一个对象的引用,`getObj2()` 返回对象的 `val` 成员变量。
在 `main()` 函数中,定义了 `a`、`b`、`c` 三个 `A` 类型的对象。`a` 的构造函数没有传入参数,所以其 `val` 成员变量默认初始化为 0;`b` 的构造函数传入了参数 2,所以其 `val` 成员变量被初始化为 2;`c` 是一个数组,其中第一个元素初始化为 10,第二个元素默认初始化为 0。
然后依次输出了 `a`、`b`、`c[0]` 的 `val` 值,分别为 0、2、10。
接着执行了 `a.getObj1()=5;` 这一语句,相当于将 `a` 对象的 `val` 成员变量修改为 5。然后输出了 `a` 对象的 `val` 值和 `b` 对象的 `val` 值,分别为 5 和 2。
相关问题
using namespace std; class A{ public: int val; A(int n=0){val=n;} A & getObj1({return *this;} int getObj2({return val;} }; int main() A a,b(2),c[2]={10}; cout< <a.val< <endl; cout< <b.val< <end|; cout< <c[0].val< <end|; a.getObj1()=5; cout< <a.val< < endl; cout< <b.getObj20< <endl; return 0; }
这段代码有一些语法错误,我来帮你修正一下:
```c++
#include <iostream>
using namespace std;
class A{
public:
int val;
A(int n=0){val=n;}
A & getObj1(){return *this;}
int getObj2(){return val;}
};
int main(){
A a,b(2),c[2]={10};
cout << a.val << endl;
cout << b.val << endl;
cout << c[0].val << endl;
a.getObj1()=5;
cout << a.val << endl;
cout << b.getObj2() << endl;
return 0;
}
```
这段代码定义了一个类`A`,包含一个整数`val`和两个成员函数`getObj1()`和`getObj2()`。在`main`函数中,定义了三个`A`类型的变量`a`、`b`、`c`,并分别输出它们的`val`值。然后通过`getObj1()`函数修改了`a`的`val`值为`5`,并输出了`a`和`b`的`val`值,最后返回`0`。
#include <iostream> using namespace std; class A { public: int val; A(int // 在此处补充你的代码 }; int main() { int m,n; A a; cout << a.val << endl; while(cin >> m >> n) { a.GetObj() = m; cout << a.val << endl; a.GetObj() = A(n); cout << a.val<< endl; } return 0; }
这段代码中,缺少的部分是 `A(int x = 0) : val(x) {}`,用于构造函数的定义。完整代码如下:
```c++
#include <iostream>
using namespace std;
class A {
public:
int val;
A(int x = 0) : val(x) {} // 构造函数定义
A& GetObj() { return *this; } // 成员函数,返回对象本身
};
int main() {
int m,n;
A a;
cout << a.val << endl;
while(cin >> m >> n) {
a.GetObj() = m;
cout << a.val << endl;
a.GetObj() = A(n);
cout << a.val << endl;
}
return 0;
}
```
这段代码定义了一个类 A,包含一个整型成员变量 val。构造函数 A(int x = 0) 初始化 val 的值为 x 或者默认值 0。成员函数 GetObj() 返回对象本身,方便进行连续的赋值操作。main() 函数中,定义了一个对象 a,初始时 val 值为 0。然后进入循环,每次输入两个整数 m 和 n,先将 a 的 val 赋值为 m,再输出 val 的值;然后将 a 的 val 赋值为一个新构造的对象 A(n),再输出 val 的值。循环结束后,程序返回 0。