运算符重载和复制构造函数的备忘录
#include <iostream> using namespace std; class A { public: int x{ 0 }; A(int i) { x = i; } A operator =(int z)//注意这里返回值不是引用 { x = z; return *this; } A(A & a) { cout << x<<":修改前"<<endl; x = a.x * 2; a.x += 5; cout << x << ":修改后" << endl; } }; int main(int argc, char *argv[]) { A a = 1; auto xx= (a = 10.1) ; //这里应该做个备忘录, //xx此时是20. //a = 10.1;这句,是运行了 a的=的重载函数.=重载函数的返回值,返回给了前面的东西xx,而不是a他自己. //因为=重载运算返回的不是引用,所以返回值需要被复制,所以A(A & a)被调用.然后产生的新的临时对象,返回给了xx cout << a.x; return 0; }