题目
#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;
}
输入
多组数据,每组一行,是整数 m 和 n
输出
先输出一行:
123
然后,对每组数据,输出两行,第一行是m,第二行是n
答案
n)
{
val = n;
}
A(){
val = 123;
}
A & GetObj()
{
return *this;
}
解析
首先输出的是123,说明调用了一个无参数的构造函数,使得val变为123,所以无参构造函数就要实现这个功能。
给一个函数赋值,就要用到引用的功能。那GetObj是什么类型呢?一开始想到的是int类型,毕竟它等号后面是m,是一个数。但是看下一行的输出,是a.val的格式,并没有返回这个函数。
所以它的类型应该是A,而A是一个类,并不是一个int的变量,所以这里使用了类型转化的构造的方法,我们需要一个只有一个参数的构造函数,让编译器自动处理类型的转换问题。
这题不了解的就是该函数的返回值,return 的内容是*this,它指的就是对象本身。
return中this和*this的理解