对于复制赋值运算符,可以使用 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. springboot 使用 redis 管理session
  2. 对所写博客的几点说明
  3. PHP迸发,PHP 开发 「十宗罪」
  4. jmail组件 java_Jmail的主要参数列表
  5. sql判断基数_SQL Server中的基数估计框架版本控制
  6. 计算机科学与技术和信息与计算科学区别,信息与计算科学和计算机科学与技术有什么区别...
  7. python数据库去重_python redis连接 有序集合去重的代码
  8. 已知自然常数e的泰勒展开式是_泰勒公式:微分学的顶峰 (数学分析 · 导数的应用 (2))...
  9. ASP.NET【2】
  10. BZOJ3450 Easy
  11. [WP]第五届XMan选拔赛web
  12. EduCoder-Hive表DDL操作(一、二)答案-路漫漫远俢兮
  13. 【计算机游戏开发】游戏交互界面设计
  14. 执行款不足以清偿全部债务时应当如何抵充
  15. 白浩然计算机学院,信息数理学院2015年上半年团员推优汇总表.doc-附件:.doc
  16. 什么是抽象类?抽象类有什么特点?举例说明抽象类及其成员的定义方法。
  17. 宋宝华:论一切都是文件之匿名inode
  18. 联想微型计算机怎么拆开,联想昭阳e42g拆机步骤
  19. python最大公约数算法流程图,Python 最大公约数算法
  20. 离开工作了五年的公司,还是留下来?

热门文章

  1. git个人常用的命令
  2. csv可以保存特殊字符_浅谈CSV注入漏洞
  3. 已知旋转矩阵求角度_解析几何|对称,平移和旋转
  4. window.print设置目标打印机_愿得一人心,白首不相离, 极印手机照片打印机入手体验...
  5. Docker error : no space left on device docker 空间不足
  6. python读取文件并另存为_Python实现读取并保存文件的类
  7. 纷杂的Spring-boot-starter: 3 数据访问与spring-boot-starter-jdbc
  8. Lambda表达式只是一颗语法糖?
  9. MySQL(5)-----DQL语句的基本查询与高级查询
  10. Spring Boot(十八):使用Spring Boot集成FastDFS