首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

重载赋值运算符,可以返回const类型吗,该如何处理

2012-02-14 
重载赋值运算符,可以返回const类型吗如题[解决办法]effectiveC/C++ code另一个常犯的错误是让operator返

重载赋值运算符,可以返回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来说是可以的,对我和我的类来说也可以。那它对你和你的类也应该可以。为什么要无缘无故地和固定类型的常规做法不兼容呢?
[解决办法]
探讨
有人说 a=b=c的时候会有问题,但也说不清是什么问题?
const AAA& operator = (const AAA & a);

热点排行