这个item主要分析了防止对象自我赋值,利用copy-and-swap策略来解决。

写了小代码,其实在实际中大部分会简单写:

#include <iostream>
#include<string>
using namespace std;class Widget
{
public:Widget(int aData):m_Data(aData){}virtual void Swap(Widget &aRhs){int lTemp = aRhs.m_Data;aRhs.SetData(m_Data);m_Data = lTemp;}Widget& operator=(const Widget &aRhs){Widget lTemp(aRhs);Swap(lTemp);return *this;}int GetData() const{return m_Data;}void SetData(int aData){m_Data = aData;}
private:int m_Data;
};
class Drived: public Widget
{void Swap(Drived &aRhs){Drived lTemp(aRhs);aRhs = *this;*this = lTemp;}private:int m_DriveData;
};int main()
{Widget lTest1(10);Widget lTest2(-10);lTest2 = lTest1;cout << lTest2.GetData() << endl;}

  

  

EffectiveC++ Item11相关推荐

  1. [EffectiveC++]item34:区分接口继承和实现继承

    [EffectiveC++]item34:区分接口继承和实现继承 转载于:https://www.cnblogs.com/jeanschen/p/3363569.html

  2. effectivec++条款18,让接口容易被正确使用,不宜被吴勇

    test* create_test();shared_ptr<test> create_test();//下面的接口比上面的接口要好 auto_ptr<test> create ...

  3. [EffectiveC++]item17:以独立语句将newed对象置入智能指针

    Store newed objects in smart pointers in standalone statements 转载于:https://www.cnblogs.com/jeanschen ...

  4. [EffectiveC++]item41:了解隐式接口和编译期多态

    转载于:https://www.cnblogs.com/jeanschen/p/3520294.html

  5. [EffectiveC++]item32:确定你的public继承模塑出is-a关系

    1) 2) 3) 4) 转载于:https://www.cnblogs.com/jeanschen/p/3593466.html

  6. EffectiveC++编程的50个建议

    文章目录 何时调用`copy`构造函数 视`C++`为一个语言联邦 尽量以`cosnt.enum.inline`替换`#define` 尽可能使用`const` 确定对象被使用之前已先被初始化 了解` ...

  7. [EffectiveC++]item21:Don't try to return a reference when you must return an object

    转载于:https://www.cnblogs.com/jeanschen/p/3229602.html

  8. [EffectiveC++]item22:Declare data members private

    将成员变量隐藏在函数接口的背后,可以为"所有可能的实现"提供弹性, 假设我们有一个public成员变量,而我们最终取消了它,多少代码可能会被破坏呢?那是一个不可知的大量. prot ...

  9. [EffectiveC++]item02:尽量以const,enum,inline代替#define

    转载于:https://www.cnblogs.com/jeanschen/p/3214662.html

最新文章

  1. 使用PyTorch从零开始实现YOLO-V3目标检测算法 (四)
  2. 关于页面莫名空白的解决方式
  3. 树莓派:外设开发编程,控制继电器
  4. android中判断设备定位状态
  5. Spring MVC 入门
  6. react 文本框_React自动完成文本框
  7. $.ajax 同步一不,ajax 同步不生效
  8. 用PyTorch实现一个卷积神经网络进行图像分类
  9. Atitit uri url urn 的概念区别 与联系 目录 1.1. 概念图 uri包括url和urn。。Urn一般是相对路径。。。 1 1.2. 统一资源名称 (Uniform Resourc
  10. div并排排列的两种方法浅谈。
  11. 独自封装windows 10系统教程(全)
  12. imx6,imx7和am335环境变量配置文件
  13. 无版权,全免费,请收藏这10个免费高清无权素材网站
  14. 一文解读KANO模型
  15. 危机管理计划书模板_危机公关策划书范文_计划方案.doc
  16. 公交线路查询接口使用说明
  17. 拟合系数 / 决定系数 / R方 / R^2的理解
  18. kettle-java代码执行hive相关ktr时报错: database type with plugin id [HIVE2] couldn‘t be found!
  19. Windows 应用商店无法打开解决办法
  20. 河北省地税数据上收集中及异地容灾应用(RealSync数据库同步复制)

热门文章

  1. 江湖永在:金庸先生和阿里人的那些记忆
  2. SAP MM 物料主数据MRP2 视图’Minimum Lot Size’字段
  3. SAP LSMW 物料主数据导入毛重净重放大1000倍问题之对策
  4. invalid use of incomplete type ‘class B‘
  5. 划重点!2020年,这些前沿技术最受关注
  6. 百度地图发布专网地图时空数据托管平台,构建智慧城市数字底盘
  7. 人工智能应用实践与趋势
  8. 50大产业链全景图(高清完整版)
  9. 程序员在外面看见bug会想修吗? | 每日趣闻
  10. 涌进体制的技术人:Nature 发文硕士回乡当公务员