
起初我的编码是这样的
#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 &
