起初我的编码是这样的
#include <iostream>
#include <cstring>
using namespace std;
class A
{
public:
int val;
A(int v) : val(v) {}
A() : val(123) {}
int &GetObj() { return *this; } // 注意在这里用的是 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,而不能将A转换为别的类型(int, double…)也就导致了下面位置的报错
- 所以上面正确的类型应该是 A &