类的拷贝构造函数与赋值运算不同,拷贝构造函数是对这个类进行初始化的过程,而赋值是删除原有的东西,赋予它新的东西。

但是二者在实现上是互通的。

template<class T>
graphChain<T>::graphChain(const graphChain<T>& theChain)
{...//实现拷贝
}template<class T>
const graphChain<T>& graphChain<T>::operator=(const graphChain<T>& theChain)
{if (this == &theChain)return *this;this->~graphChain();this->graphChain<T>::graphChain(theChain);return *this;
}

像上面这样,因为不管是拷贝构造函数还是赋值运算函数,都需要从给定参数中拷贝数据,所以只需要在拷贝构造函数中实现所有的拷贝代码。

在赋值运算函数中先进行自赋值判断,然后调用自身的析构函数,再调用自身的拷贝构造函数来重新初始化。

因为析构函数的作用是释放类的内存,销毁整个类。所以一旦调用了析构函数,这个类就可能是不存在的了,所以一定要重新调用一次构造函数或者执行一段和构造函数实现相同功能的代码来重新构造一次这个类。

析构函数的调用可以直接用this指针调用。但是构造函数需要像上面那样加上作用域才可以调用!即this->graphChain<T>::graphChain(theChain);

最后返回类对象的常量引用,这是为了实现a = b = c;连续赋值。

C++学习笔记-----在重载的赋值运算函数中调用拷贝构造函数相关推荐

  1. php猴子吃桃子问题n天,『PHP学习笔记』系列四:利用函数递归调用思想解决【斐波那契数列】问题和【猴子吃桃问题】问题...

    什么是函数递归思想? 递归思想:把一个相对复杂的问题,转化为一个与原问题相似的,且规模较小的问题来求解. 递归方法只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量. 但在 ...

  2. TypeScript学习笔记1:变量赋值及书写方式

    TS 和 JS 相对比的优势 TypeScript的安装步骤.运行问题及代码的简单运行 TypeScript学习笔记1:变量赋值及书写方式 TypeScript学习笔记2:数据类型 文章目录 变量赋值 ...

  3. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  4. Tensorflow学习笔记6:解决tensorflow训练过程中GPU未调用问题

    Tensorflow学习笔记6:解决tensorflow训练过程中GPU未调用问题 参考文章: (1)Tensorflow学习笔记6:解决tensorflow训练过程中GPU未调用问题 (2)http ...

  5. FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析

    FreeRtos学习笔记(11)查找就绪任务中优先级最高任务原理刨析 怎么查找就绪任务中优先级最高的? tasks.c中声明了一个全局变量 uxTopReadyPriority,任务从其他状态进入就绪 ...

  6. C# 学习笔记(18)操作SQL Server 中

    C# 学习笔记(18)操作SQL Server 中 数据库基础操作 SQL语法可以参考 菜鸟教程 或者微软官方的SQL示例 注意SQL不区分大小写 查 1.基础查询 --最基础的查询语句, selec ...

  7. 继承关系中的拷贝构造函数和赋值操作重载函数分析

    文章目录 1 继承关系中的拷贝构造函数和赋值操作重载函数分析 1 继承关系中的拷贝构造函数和赋值操作重载函数分析 在继承关系中,如果子类未实现拷贝构造函数,那么在子类进行拷贝构造操作时,会直接调用父类 ...

  8. OpenCV学习笔记(三十六)——Kalman滤波做运动目标跟踪 OpenCV学习笔记(三十七)——实用函数、系统函数、宏core OpenCV学习笔记(三十八)——显示当前FPS OpenC

    OpenCV学习笔记(三十六)--Kalman滤波做运动目标跟踪 kalman滤波大家都很熟悉,其基本思想就是先不考虑输入信号和观测噪声的影响,得到状态变量和输出信号的估计值,再用输出信号的估计误差加 ...

  9. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

最新文章

  1. 设计模式之模板方法模式(Template Method)摘录
  2. 生产环境提升rman备份速度----启动块跟踪
  3. python 常用PEP8规范
  4. 第十七天:规划沟通管理
  5. sed手册-3 例子
  6. 安装Jaspersoft Studio
  7. 易筋SpringBoot 2.1 | 第八篇:Mybatis访问MySQL
  8. 火焰检测方法和数据集记录
  9. typedef struct Lnode{ Elemtype data; struct Lnode *next; } Lnode,*Linklist;
  10. 无法启动程序因为计算机中丢失msvcr100,devenv.exe 系统错误无法启动此程序,因为计算机中丢失 MSVCR100.dll问题的解决办法...
  11. Qt 给文本添加删除线 text-decoration
  12. 通过Mach-O文件结构看iOS堆栈信息(函数地址与符号关联)
  13. CISC 和 RISC
  14. Python Flask基础教程(入门)
  15. 读取U盘 PID,VID,SN等信息
  16. andriod studio实现界面切换
  17. Driver中使用的内核机制
  18. 游戏开发适合什么语言?
  19. 查看电脑IP端口配置/Windows Ipconfig命令教程
  20. MySQL安装及MySQL8.0新密码认证方式

热门文章

  1. Java黑皮书课后题第1章:1.13(代数:求解2*2线性方程组)编写程序,求解以下方程组并显示x和y的值 3.4x+50.2y=44.5 2.1x+0.55y=5.9
  2. 在计算机中 鼠标器属于,在计算机中,鼠标器属于()。
  3. 《构架之美》阅读笔记三
  4. Linux下使用NTFS格式移动硬盘
  5. sql基线建立-知识准备
  6. xml文件格式例如以下
  7. 操作系统实验报告3:Linux 下 x86 汇编语言2
  8. 汇编基础知识之输入输出
  9. iOS之从N个数里面取M个数的组合算法
  10. 雷军反省今天的小米:无法躺赢或猛冲猛打,只能豁出去干