第一个错误的地方:cout<<this->x=x<<endl;运算符顺序错误,赋值运算符应该是优先级最低。要取它的值得用括号。正确顺序:cout<<(this->x=x)<<endl;易混淆顺序:cout<<(this->=x<<endl);将<<作为左移运算符。第二个错误的地方:复制构造函数应 展开
第一个错误的地方:cout<<this->x=x<<endl;运算符顺序错误,赋值运算符应该是优先级最低。要取它的值得用括号。正确顺序:cout<<(this->x=x)<<endl;易混淆顺序:cout<<(this->=x<<endl);将<<作为左移运算符。第二个错误的地方:复制构造函数应该是用引用参数,否则造成死递归。正确为:X(X &t) 参数为引用参数。第三个错误的地方:外部函数如果要调用私有变量必须有friend权限。所以声明时应该注明:正确声明:friend fun(X);收起