OpenJudge 3週目テスト-01
4612 ワード
001:何を返したらいいですか
サンプル入力
2 3
4 5
サンプル出力
123
2
3
4
5
コード:
#include
using namespace std;
class A {
public:
int val;
//
A(int num = 123) :val(num) {}
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 a; cout << a.val << endl;
の結果です.ここでは構造関数を再ロードしたと思っていましたが、123をデフォルト値とすることができることに気づきました.そのため、答えのA(int num = 123) :val(num) {}
while
サイクルにおいて、オブジェクトaがメンバー関数を呼び出すのを見る.等号の左側に現れ、まずこの関数の戻り値が*this
であることを考慮し、同時に等号の右側の数字も一時変数を生成し、付与A &GetObj() {
return *this;
}
レプリケーションコンストラクション関数が呼び出された場合、返されるオブジェクトはaではなく一時的なオブジェクトであり、後続の出力は123であり、参照タイプであればaオブジェクトの変更である.