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 17:10:14 浏览: 50
这段代码的输出结果是:
```
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`。
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; }的结果
该程序的输出结果为:
```
0
2
10
5
2
```
程序中定义了一个名为 A 的类,包含一个整型成员变量 val 和三个成员函数。其中:
- 构造函数 A(int n=0) 可以通过传入整型参数 n 来初始化 val 成员变量,如果没有传参则默认初始化为 0。
- 成员函数 A& getObj1() 返回当前对象的引用。
- 成员函数 int getObj2() 返回当前对象的 val 成员变量。
在主函数中,定义了三个 A 类型的对象 a、b 和 c[2]。其中,a 没有传入参数,因此 a.val 的初始值为 0,b 传入参数 2,因此 b.val 的初始值为 2,c 数组的第一个元素 c[0] 初始化为 10,第二个元素 c[1] 未初始化,因此 c[1].val 的值也是 0。
接下来,程序分别输出了 a.val、b.val 和 c[0].val 的值,然后将 a.getObj1() 返回的引用赋值为 5,此时 a.val 的值变为 5。最后输出了 a.getObj2() 和 b.getObj2() 的结果,分别输出了 a 和 b 对象的 val 成员变量的值。
因此,程序的输出结果为:
```
0
2
10
5
2
```
阅读全文