设为首页 加入收藏

TOP

effectiveC++(十五)(二)
2010-12-26 23:18:48 来源: 作者: 【 】 浏览:4343
Tags:effectiveC 十五
=, x.operator=和y.operator=的参数是前一个operator=调用的返回值。所以operator=的返回值必须可以作为一个输入参数被函数自己接受。在一个类c中,缺省版本的operator=函数具有如下形式(见条款45):

c& c::operator=(const c&);

一般情况下几乎总要遵循operator=输入和返回的都是类对象的引用的原则,然而有时候需要重载operator=使它能够接受不同类型的参数。例如,标准string类型提供了两个不同版本的赋值运算符:

string&                            // 将一个string
operator=(const string& rhs);      // 赋给一个string

string&                            // 将一个char*
operator=(const char *rhs);        // 赋给一个string

请注意,即使在重载时,返回类型也是类的对象的引用。

c++程序员经常犯的一个错误是让operator=返回void,这好象没什么不合理的,但它妨碍了连续(链式)赋值操作,所以不要这样做。

另一个常犯的错误是让operator=返回一个const对象的引用,象下面这样:

class widget {
public:
  ...       &nbs

首页 上一页 1 2 3 4 5 6 下一页 尾页 2/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇effectiveC++(十六) 下一篇effectiveC++(十四)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: