先上代码
#include<iostream> using namespace std; class test { public: int t; test(void) { t=0; } /* test& operator=(test& a) { this->t = a.t+1; return *this; } */ }; int main() { test a; a=test(); return 0; }
C++的类有默认的赋值运算,也就是说可以不用本人手写operator=的重载也可以直接运行
a=test();
但是,本人试着本人重写了赋值运算符,也就是注释中的部分,结果就报错了。
错误原因是,引用作为参数,不能传入临时对象,也就是说,必须这样使用
test b; a=b;
那么,本人的问题是,怎么样手写赋值运算符,使得其可以支持
a=test();
这种使用方法?
解决方案
20