重载赋值运算符,可以返回const类型吗
如题
[解决办法]
effective
- C/C++ code
另一个常犯的错误是让operator=返回一个const对象的引用,象下面这样:class widget {public: ... const widget& operator=(const widget& rhs); ... }; 这样做通常是为了防止程序中做象下面这样愚蠢的操作:widget w1, w2, w3;...(w1 = w2) = w3; // w2赋给w1, 然后w3赋给其结果 // (给operator=一个const返回值 // 就使这个语句不能通过编译)这可能是很愚蠢,但固定类型这么做并不愚蠢:int i1, i2, i3;...(i1 = i2) = i3; // 合法! i2赋给i1 // 然后i3赋给i1!这样的做法实际中很少看到,但它对int来说是可以的,对我和我的类来说也可以。那它对你和你的类也应该可以。为什么要无缘无故地和固定类型的常规做法不兼容呢?
[解决办法]