对于复制赋值运算符,可以使用 copy-and-swap idiom .

例如,在您的情况下,您可以将其添加到 IntList 类定义中(给定您的复制构造函数的代码,我假设您的唯一数据成员是 IntNode* first; ):

// --- swap non-member function ---

friend void swap(IntList& a, IntList& b) /* no-fail */ {

// swap data members one by one

std::swap(a.first, b.first);

}

// --- (copy) assignment operator ---

IntList& operator=(const IntList& other) {

IntList temp(other); // copy construction

swap(*this, temp); // swap

return *this;

// destruction of temp ("old *this")

}

实际上,这可能是更好的风格:

// --- swap non-member function ---

friend void swap(IntList& a, IntList& b) /* no-fail */ {

using std::swap; // enable ADL

// swap data members one by one

swap(a.first, b.first);

}

// --- (copy) assignment operator ---

IntList& operator=(IntList other) { // note: take by value

swap(*this, other);

return *this;

}

/* no-fail */ 注释可以在C 98/03中的 throw() (或者仅仅是 /* throw() */ 注释)中替换,在C 11中为 noexcept .

(注意:不要忘记预先包含std::swap的正确 Headers ,即C 98/03中的 ,C 11中的 (您也可以包括两者) . )

备注:这里 swap 函数在类体中定义,但它仍然是非成员函数,因为它是 friend .

查看整个故事的链接帖子 .

(当然,除了复制构造函数之外,还必须提供正确的析构函数定义(请参阅What is The Rule of Three?) . )

java的复制构造函数_如何从复制赋值运算符调用复制构造函数?相关推荐

  1. java 默认参数 实例化_如何使用Kotlin中的默认构造函数参数值实例化对象?

    使用在科特林: 在构造函数中的默认值仅服用时该构造的特定参数不传递到它在所有.那意味着它是为了实现各种组合的参数化构造函数. 例如, data class Bird (val name: String ...

  2. mysql5.7多源复制缺点_配置mysql5.7多源复制

    假设现在有三台主机,两台主库分别为master1,master2,一台从库slave 1,在主库上分别开启二进制日志,并且配置不同server-id; [mysqld] log-bin=mysql-b ...

  3. java excel异步导出_如何实现前端异步调用导出Excel?

    今天分享JBolt极速开发平台中使用的异步下载文件的解决方案. 需求场景: 列表查询界面有一个[导出Excel]按钮,需要点击按钮,弹出loading信息框,异步调用后台action,得到数据库数据后 ...

  4. 拷贝构造函数 c语言中文网,C++对象的复制

    有时需要用到多个完全相同的对象,例如,同一型号的每一个产品从外表到内部属性都是一样的,如果要对每一个产品分别进行处理,就需要建立多个同样的对象,并要进行相同的初始化,用以前的办法定义对象(同时初始化) ...

  5. 不存在从void转换到sqlist的适当构造函数_拷贝构造函数与赋值构造函数

    拷贝构造函数与赋值构造函数 在C++中,如果要创建一个新的类,并用已有的类来给它附初值.就要用到拷贝构造函数,拷贝构造函数又分为两种. 1.合成的拷贝构造函数 在你没有定义自己的拷贝构造函数而又调用了 ...

  6. 何时会调用拷贝构造函数

    拷贝构造函数什么时候用到 当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用.也就是说,当类的对象需要拷贝时,拷贝构造函数将会被调用.以下情况都会调用拷 ...

  7. C++基础知识 - 什么时候调用拷贝构造函数

    什么时候调用拷贝构造函数 1. 调用函数时,实参是对象,形参不是引用类型 如果函数的形参是引用类型,就不会调用拷贝构造函数 #include "Human.h" using nam ...

  8. java的复制构造函数_什么是Java中的复制构造函数?

    通常,复制构造函数是通过使用先前已创建的相同类的对象初始化对象来创建对象的构造函数. Java支持复制构造函数,但与C语言不同,Java没有提供您需要自己定义的显式复制构造函数. 写一个拷贝构造函数 ...

  9. java对象上有横线_对象bean间属性值复制:无视大小写和下划线_和横杠-

    1.简要说明:在java代码开发过程中,总会遇到实体类bean直接的属性复制问题,将一个bean中的值复制到另一个bean中,这时如果属性名是形同的,(仅仅有大小写或带下划线_或带横杠-)的区别,那就 ...

  10. java 对象复制 反射_利用Java反射机制实现对象相同字段的复制操作

    一.如何实现不同类型对象之间的复制问题? 1.为什么会有这个问题? 近来在进行一个项目开发的时候,为了隐藏后端数据库表结构.同时也为了配合给前端一个更友好的API接口文档(swagger API文档) ...

最新文章

  1. readv和writev函数
  2. 7、字典和string的用法
  3. linux mrtg 进程名称,Linux上的MRTG流量监控中心
  4. day 04 作业 循环和分之
  5. tomcat jsp导入java_[导入]Tomcat JSP Web 开发中的乱码问题小姐
  6. 存储管理的页面置换算法
  7. StreamWriter类的一般使用方法
  8. Hive UDF 函数指南
  9. 随着台积电上调代工费,芯片及电子设备价格上涨可能持续到明年
  10. 程序员编程艺术:第三章续、Top K算法问题的实现
  11. Openresty各个阶段的执行次序
  12. 苹果tv4安装,I play.iOS13代pv4安装,播放国内视频,
  13. 系统架构设计师之备考攻略(2022年修订版)——一篇就够
  14. 直播软件视频流怎样测试,手把手教你,如何用视频号直播推流!
  15. IP电话的VoIP语音网关设计
  16. 含参积分求导/积分上限函数求导/
  17. 投入产出实例matlab,基于MATLAB的投入产出分析
  18. EOS基础全家桶(九)官方测试网的使用
  19. React Native 入门实战视频教程(36 个视频)
  20. 安卓SDK——人脸识别

热门文章

  1. 挑战性题目DSCT501:大整数因子分解
  2. BZOJ4072[Wf2014] baggage
  3. webpack5学习与实战-(一)-webpack的初步认识
  4. vue学习笔记-promise
  5. iostat 输出CPU、磁盘IO的使用情况统计信息
  6. 网站开发用什么语言好_兰州网站开发哪家策划效果好
  7. ie调试html代码,IE下的调试工具IE WebDeveloper
  8. html标签%3cli%3e分成两列,使用html自制玫瑰
  9. bim 骗局_建筑设计BIM工程师是个好职业吗?
  10. node.val java_LeetCode——21. 合并两个有序链表(Java)