一、概念

  • 使用一个已经存在的对象,去构造(初始化)另一个对象

二、格式

  • 参数加上const&,因为拷贝构造函数在几种情况下都会被隐式地使用,因此拷贝构造函数不应该是explict的

    • const:防止函数内部修改值

    • &:防止无限循环拷贝

类名(类名 const& 参数名)
{
函数体
}

三、拷贝构造函数的分类

  • 浅拷贝:成员变量无动态内存(指针等)变量时,在拷贝构造函数内对成员变量只做简单的赋值,不做内存申请

  • 深拷贝:成员变量有动态内存(指针等)变量时,在拷贝构造函数内对成员变量先进行内存申请,然后进行内容拷贝

  • 默认拷贝构造:没有写拷贝构造时,系统默认给出(默认的为浅拷贝)

浅拷贝:

//此类情况使用浅拷贝
class Cperson
{
private:
int a;
public:
Cperson(Cperson const& other);//拷贝构造
}
Cperson::Cperson(Cperson const& other)
{
this->a=other.a;
}

深拷贝:

C++:10---再议拷贝构造函数相关推荐

  1. 拷贝构造函数的调用以及浅拷贝与深拷贝的理解

    今天一直在研究拷贝构造函数相关的东西,我这个大四老狗感觉又回到了大一学C++的时候.瞎捣鼓了一天,略微还是有些收获的,趁着脑子中的概念正热,把自己的心得赶紧整理出来分享给大家. ​       首先简 ...

  2. 【C++ 6.析构函数和拷贝构造函数】

    C++ 6.析构函数和拷贝构造函数 1. 析构函数 a. 概念 b. 特性 1.析构函数是在类名称前面加上字符~. 2.无参数和返回值. 3.一个类有且只有一个析构函数. 4.对象生命周期结束时,C+ ...

  3. 利用类定义一个指针会调用默认构造函数吗_C++的拷贝构造函数

    拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象.拷贝构造函数通常用于: 通过使用另一个同类型的对象来初始化新创建的对象. 复制对象把它作为参数传递给 ...

  4. C++ 拷贝构造函数和赋值运算符

    本文主要介绍了拷贝构造函数和赋值运算符的区别,以及在什么时候调用拷贝构造函数.什么情况下调用赋值运算符.最后,简单的分析了下深拷贝和浅拷贝的问题. 拷贝构造函数和赋值运算符 在默认情况下(用户没有定义 ...

  5. 【C++】类和对象——拷贝构造函数

    文章目录 什么是拷贝构造函数 为什么拷贝构造要传引用 默认拷贝构造函数 浅拷贝和深拷贝 编译器可能的优化 自定义类型做函数返回值时传值返回 自定义类型做函数参数时传值调用 总结一下 什么是拷贝构造函数 ...

  6. 构造函数的调用场景--构造函数与拷贝构造函数、移动构造函数之辨

    在Scott Meyers的著作<Effective C++>条款5中,明确指出要"了解C++默默编写并调用哪些函数".这里通过一个简短的C++代码,阐述哪些场景调用构 ...

  7. 构造函数与拷贝构造函数

    拷贝构造函数和构造函数不能分开说,他们都是初始化对象的一种方法.但是我们这里用构造函数辅助说明拷贝构造函数,主要说说拷贝构造函数的声明,用途和使用注意事项. 众所周知,构造函数是一个初始化类对象的函数 ...

  8. 【10分】H. 身份证号码升位(拷贝构造函数)

    题目描述 class CDate { private: int year, month, day; public: CDate(int,int,int); bool check(); //检验日期是否 ...

  9. 复制构造函数(拷贝构造函数)

    也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生.对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什 ...

最新文章

  1. django搭建示例-ubantu环境
  2. 进度条三方库tdqm trange用法
  3. leetcode - Container With Most Water
  4. python 删除文件、目录_python实现删除文件与目录的方法
  5. 霍纳法树形流图中处理机p个数_2009系统结构试卷答案
  6. java接口构建英雄属性_Python接口类的多继承以及抽象类的单继承
  7. 睡眠音频分割及识别问题(四)--YAMNet简介
  8. mysql查询中怎样使用索引_MySQL如何使用索引
  9. with pdo mysql_如何在PHP下开启PDO MySQL的扩展
  10. STM32 USART通信
  11. uva11609(组合数学,快速幂)
  12. html5画图论文结束语,基于HTML5 Canvas的画图板的设计与实现.doc
  13. 【引用】URLDownloadToFile_VB下载文件!
  14. AIX双机调整DB2配置
  15. app安全渗透测试详细方法流程
  16. 服务器流量超载怎么修复,网站服务器超出流量怎么办
  17. 程序猿最喜欢说的30句话!看看你有没有说过
  18. 智能卡 PSAM 卡片文件结构
  19. 湖南计算机专修学院20年同学聚会,20年后的一次同学聚会
  20. php 微信公众号客服,微信公众平台开发 多客服

热门文章

  1. HMI使用自定义控件流程
  2. UE4 连接自定义服务器
  3. ARM中断分析之二:裸机下面的中断处理
  4. Vxworks系统学习之一----任务
  5. python机器人算法_DBscan算法及其Python实现
  6. 狼人杀服务器紧急维护中,狼人杀最可怕的武器是那张嘴?禁言长老:你已被管理员禁言一天!...
  7. 神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python字典和集合)
  8. 【转】C++指针详解!!!!
  9. 【转】2.1.1 购买阿里云服务器(Ubuntu系统)
  10. ASP.NET中共有哪几种类型的控件?其中,HTML控件、HTML服务器控件和WEB服务器控件之间有什么区别