一、概念

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

二、格式

  • 参数加上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. ASP.NET虚拟主机的重大安全隐患
  2. 编程之美2.5 寻找最大的K个数
  3. 访谈:摩尔定律后时代,看13位行业专家如何看量子计算机的未来?
  4. SAP Fiori架构一览
  5. Apache Spark软件包,从XML到JSON
  6. 贪吃蛇python小白_面向 python 小白的贪吃蛇游戏
  7. 在 Google Earth 上看新闻
  8. Oracle“钱夹”的使用
  9. 如何正确在NSMutableDictionary中加入一个变量int
  10. 查看网页上次更新时间
  11. Java对接ChinaPay提现(公私钥方式)
  12. Nodejs http request 报错 “ETIMEDOUT“,“ECONNRESET“ , “ENOTFOUND“,“ECONNREFUSED”,“EHOSTUNREACH“
  13. 000webhost虚拟主机绑定自定义二级域名
  14. Fiddler - 使用 Fiddler 监控本地 HTTP 请求,谷歌浏览器提示“隐私设置错误”
  15. [总结]mac pro 提示“USB设备已停用”导致外接显示器黑屏
  16. MXL90614红外线测温传感器
  17. ZOJ 3380 Patchouli's Spell Cards 概率DP
  18. 入住阿里云MQTT物联网平台
  19. 入坑刷机?手机各大模式了解一下
  20. 给手机安装NES模拟器,游戏无限玩

热门文章

  1. opendrive匝道
  2. Asterisk 1.4.42将成绝唱
  3. uC/GUI 在Cortex-M3 内核上的移植
  4. 是否要运行此应用程序_使用Delve调试Go应用程序
  5. 使用promise解决回调地狱_「每日一题」Promise 是什么?
  6. JAVA中返回值为字母时_LeetCode#524通过删除字母匹配到字典里最长单词-java中CompareTo方法用法以及Comparator中Compare方法返回值...
  7. 【转】ABP源码分析四:Configuration
  8. 【转】人工智能-1.1.1 什么是神经网络
  9. 【转】WebSocket详解(一):初步认识WebSocket技术
  10. 【转】.Net中的异步编程总结