1. 连续赋值
    例如 int x,y,z;
    x=y=z=15;
    为实现上述定义,可定义为
    class Widget {
    public :
    Widget& operator=(const Widget& rhs)
    {
    return* this.
    }
    }
    令赋值操作符号返回一个reference to *this.
  2. 自我赋值
    例如 Widget::operator=(const Widgett& rhs)
    {
    delete pb.
    pb=new Bitmap(*rhs.pb);
    return *this
    }
    这是一份不安全的operator实现版本,这里的自我赋值的问题是,operator=函数内的 *this和rhs有可能是同一个对象。如果这样的话delete就不只是销毁当前对象pb,它也销毁了rhs.在函数的末尾,widget持有的指针指向一个被销毁的对象。
    如何改变这种错误,有一种做法是在删除前先检查一下this和rhs是否为同一个函数。例如
    Widget& Widget::operator=(const Widget& rhs)
    {
    if(this==&rhs) return *this;
    delete pb;
    pb=new Bitmap(*rhs.ph);
    return this.
    }
    也可以将pb的指针赋值给一个新的对象。
    Widget& Widget::operator=(const Widget& rhs)
    {
    Bitmap
    pOrig=pb;
    pb=new Bitmap(*rhs.pb);
    delete pOrig;
    return *this;
    }
    确保当对象自我赋值时operator=有良好行为,其中技术包括比较“来源对象”和“目标对象”的地址,精心周到的语句顺序,以及copy-and-swap.
    确定任何函数如果操作一个以上的对象,而其中多个对象是同一个对象时,其行为仍然正确。

operator=的用法相关推荐

  1. python3中 operator模块用法介绍

    文章目录 概述 将运算符映射到函数 1基本方法 介绍 2 三个类介绍 2-1 attrgetter 介绍 2-2 itemgetter 使用介绍 1 用来排序 2 通过 获取多个值 2-3 metho ...

  2. OpenCV中Mat类的重载运算符operator()的用法

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 定义如下: inline Mat Mat::op ...

  3. python operator __gt___Python operator.gt方法代码示例

    本文整理汇总了Python中operator.gt方法的典型用法代码示例.如果您正苦于以下问题:Python operator.gt方法的具体用法?Python operator.gt怎么用?Pyth ...

  4. (六)boost库之内存管理shared_ptr

    1.shared_ptr的基本用法 boost::shared_ptr<int> sp(new int(10)); //一个指向整数的shared_ptr assert(sp.unique ...

  5. PowerShell 在 SharePoint 2010 自动化部署中的应用(2)-编译打包

    上次说到通过PowerShell将项目代码从TFS服务器拿到本地,这次再说说编译和打包的经历 2 编译打包 我相信做过SharePoint2007的都有过打包时恶梦般的经历,Cabinet SDK,V ...

  6. cannot find implementation for com.xx.xx.xxDatabase. XXDatabase_Impl does not exist

    参考:https://my.oschina.net/ldhy/blog/3146744 我之前使用 annotationProcessor 是没有问题的 image.png 查看全文 http://w ...

  7. boost之内存管理

    smart_ptr库概述 计算机系统中资源有很多种,内存是我们最常用到的,此外还有文件描述符.socket.操作系统handle.数据库连接等,程序里申请这些资源后必须及时归还系统,否则就会产生难以预 ...

  8. ReactorKit

    Swift ReactorKit 框架 ReactorKit 是一个响应式.单向 Swift 应用框架.下面来介绍一下 ReactorKit 当中的基本概念和使用方法. 目录 基本概念 设计目标 Vi ...

  9. Haproxy学习总结

    一.Haproxy介绍 1.实现了一种事件驱动,单一进程模型,支持数万计的并发连接,用于为tcp和http应用程序提供高可用,负载均衡和代理服务的解决方案,尤其适用于高负载且需要持久连接或7层处理机制 ...

最新文章

  1. 动画演示10个有趣但毫无用处的Linux命令
  2. linux设备驱动第一篇:设备驱动程序简介
  3. 神州数码成为华为数通产物总代理
  4. php之去掉html标签,PHP删除HTMl标签
  5. 一个公式来说明加接圈的作用和缺点
  6. 分数相同名次排名规则C语言,如何给数据排名(相同分数相同名次)-excel篇
  7. Codeforces Round #296 (Div. 2) C. Glass Carving [ set+multiset ]
  8. 翻译: Web 3.0是一种几乎无需信任的承诺的协议/架构
  9. linux过滤端口抓包_linux抓包命令tcpdump
  10. RS232串口接线图
  11. GWT(Google Web Toolkit)是干嘛用的
  12. 树莓派存储方案_树莓派网络存储(NAS)
  13. springsecurity与gateway网关整合配置
  14. 如何获取淘宝/天猫商品历史价格信息的API接口
  15. 【联盛德W806上手笔记】九、DMA
  16. 实体链接在小布助手和OGraph的实践应用
  17. Anroid 逆向工具
  18. 电子白板无法触摸怎么办?
  19. 【流程挖掘的四个质量维度】简单度、拟合度、精确度和泛化度介绍
  20. sourcegraph/conc: Better structured concurrency for go

热门文章

  1. 度过有意义的生命--俞敏洪2009-06-02同济大学的演讲
  2. 新手项目经理入坑指南
  3. C++ 小游戏 井字棋
  4. 华硕笔记本节能证书_节能证书编号
  5. 我们已经进入网络犯罪2.0时代
  6. 国际刑警组织:打击网络数字犯罪需全球协作
  7. 盗版导致印度成为网络犯罪重灾区
  8. GOOGLE 真实地图模型和瓦片图下载
  9. 滴滴出行数据应用平台建设实践
  10. iOS 15.1即将上线,iPhone13的“苹果手表解锁”Bug已被修复