描述
程序填空,使其按要求输出
#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
样例输入
2 3 4 5
样例输出
123 2 3 4 5
分析:
显然对象在无初值传入时仍能开辟空间,有两种可能:a.含有无参构造函数,b.含有默认参数构造函数。能够输出变量val,证明是后者。
GetObj函数可以接受对象和int型变量的赋值,证明其返回值是一个对象,若想改变左边值(类型为对象)自身属性,应该返回自身的引用。
综上:
#include <iostream>
using namespace std;
class A {
public:
int val;
A(int x = 123){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;
}
注意:无参构造函数和默认值构造函数是冲突的,在初始化无参对象时会产生重载二义性。