Robin Chow's C++ Blog

 

[导入]Exception C++ 之 16

  • 如果需要的话,请编写一个私有函数来使拷贝操作和拷贝赋值共享代码;千万不要利用“使用显式的析构函数并且后面跟一个 placement new”的方法来达到“以拷贝构造操作实现拷贝赋值操作”这样的目的。也就是说,决不要编写如下的代码:
    T& T::operator=(const T &other)
    {
        if(this != &other)
        {
           this->~T();               // 有害!
           new (this) T(other);   // 有害!
        }
        return *this;
    }
  • 关于拷贝赋值操作符有两点需要注意:
    1. 将拷贝赋值操作声明为“T& T::operator=(const T&)”
    2. 不要返回 const T&,尽管这样做避免了诸如“(a = b) = c”的用法;这样做意味着:你无法出于移植性的考虑而将 T 对象放入标准程序库之容器 -- 因为其需要赋值操作返回一个单纯的 T&。

文章来源:http://my.donews.com/robinchow/2007/01/14/uufhhtovwfvygicxibjufbugcnhamivhcapk/

posted on 2007-10-23 20:51 Robin Chow 阅读(59) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜