设为首页 加入收藏

TOP

effectiveC++(十六)(二)
2010-12-26 23:19:42 来源: 作者: 【 】 浏览:4571
Tags:effectiveC 十六
bsp;         // 对于ptr,赋的值是指针所指的值,
                               // 不是指针本身

  return *this;                // 见条款15
}

初写这个类时当然很容易记住上面的原则,但同样重要的是,当类里增加新的数据成员时,也要记住更新赋值运算符函数。例如,打算升级namedptr模板使得名字改变时附带一个时间标记,那就要增加一个新的数据成员,同时需要更新构造函数和赋值运算符。但现实中,因为忙于升级类的具体功能和增加新的成员函数等,这一点往往很容易被忘记。

当涉及到继承时,情况就会更有趣,因为派生类的赋值运算符也必须处理它的基类成员的赋值!看看下面:

class base {
public:
  base(int initialvalue = 0): x(initialvalue) {}

private:
  int x;
};

class derived: public base {
public:
  derived(int initialvalue)
  : base(initialvalue), y(initialvalue) {}

  derived& operator=(const derived& rhs);

private:
  int y;
};

逻辑上说,derived的赋值运算符应该象这样:

// erroneous assignment operator
derived& derived::operator=(const derived& rhs)
{
 

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

评论

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