• 构造,析构,拷贝构造核心点总结

  • 构造函数

并不是开空间创建对象  主要完成类对象初始化工作

构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用

在对象的生命周期内只调用一次

特征如下:
1. 函数名与类名相同。
2. 无返回值。
3. 对象实例化时编译器自动调用对应的构造函数。
4. 构造函数可以重载

5.如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成

6,无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只能有一个

  • 析构函数

与构造函数功能相反,析构函数不是完成对象的销毁,局部对象销毁工作是由编译器完成的。而 对象在销毁时会自动调用析构函数,完成类的一些资源清理工作

特征如下:
1. 析构函数名是在类名前加上字符 ~。

2. 无参数无返回值。

3. 一个类有且只有一个析构函数。若未显式定义,系统会自动生成默认的析构函数。

4. 对象生命周期结束时,C++编译系统系统自动调用析构函数

5.编译器生成的默认 析构函数,对会自定类型成员调用它的析构函数

  • 拷贝构造函数

只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象 创建新对象时由编译器自动调用

特征如下: 
1. 拷贝构造函数是构造函数的一个重载形式。

2. 拷贝构造函数的参数只有一个且必须使用引用传参,使用传值方式会引发无穷递归调用

无穷递归如下图:

传值引发对象拷贝,继续调用拷贝构造,始终无法完成,只能无限递归调用

3若未显示定义,系统生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷 贝,这种拷贝我们叫做浅拷贝,或者值拷贝,只拷贝成员对象所包含的成员变量 对开辟的内存空间不会进行拷贝

小tips !!! 构造,析构,拷贝构造知识点总结相关推荐

  1. 《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学

    <深度探索C++对象模型>读书笔记第五章:构造析构拷贝语意学 对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constr ...

  2. c/c++教程 - 2.4.2.1~2 对象的初始化和清理,构造函数和析构函数,构造函数的分类和调用(有参构造,无参构造,普通构造,拷贝构造,括号法,显示法,隐式转换法,匿名对象)

    目录 4.2 对象的初始化和清理 4.2.1 构造函数和析构函数 4.2.2 构造函数的分类及调用 相关教程 4.2 对象的初始化和清理 生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候 ...

  3. 构造、拷贝构造、赋值、析构

    需要注意的问题(当数据成员函数指针型变量,需要申请空间赋值时) 1.构造函数 ①需要给空指针申请一个'\0'的空间 2.拷贝构造函数 ①传入的参数,必须引用传递否则会出现无休止的拷贝构造 ②对其参数值 ...

  4. 《深度探索C++对象模型》--5 构造析构拷贝 6 执行期语意学

     <深度探索C++对象模型>--5构造.析构.拷贝语意学 1.纯虚函数: (1)C++可以定义和调用一个纯虚函数,不过只可以静态调用,不可以由虚拟机制调用. 注意:pure virtu ...

  5. C++中的trivial和non-trivial构造/析构/拷贝/赋值函数及POD类型

    在侯捷的<STL源码剖析>里提到trivial和non-trivial及POD类型,相关知识整理如下. trivial意思是无意义,这个trivial和non-trivial是对类的四种函 ...

  6. Effective C++学习笔记——构造/析构/拷贝运算

    条款9:决不再构造和析构过程中调用virtual函数,包括通过函数间接调用virtual函数. 应用:想在一个继承体系中,一个derived class被创建时,某个调用(例如生成相应的日志log)会 ...

  7. c++: 移动构造/赋值 和 拷贝构造/赋值

    Copy Constructor vs. Assignment https://blog.csdn.net/u013904227/article/details/107441848 [阅读原文] 这篇 ...

  8. 派生类的拷贝构造【C++继承】

    语法 拷贝构造顺序 图示 说明 拷贝构造顺序 拷贝构造实例 语法 派生类::派生类(const 派生类& another):基类(another),派生类新成员(another.新成员) {/ ...

  9. C++ 拷贝构造 与 赋值运算符重载

    拷贝构造 当我们创建了一个对象时,想让它的内容和一个已经创建好的对象的内容相同,那么就必须用到拷贝构造.拷贝构造编译器也会自动生成,也是C++类中的6个默认函数之一. 拷贝构造函数格式类名(const ...

最新文章

  1. 推荐|5种商业AI产品的技术架构设计!
  2. 如何在命令行下更改ip地址
  3. Rust 阴阳谜题,及纯基于代码的分析与化简
  4. js 点击侧边栏展示内容_上海SEO优化网站侧边栏一般添加什么内容
  5. 关于ODI agent的配置部署
  6. 宝塔控制面板忘记密码怎么找回?
  7. 算法:Find First and Last Position of Element in Sorted Array(在有序数组中搜索第一个和最后一个找到的数字)
  8. Blender 精确建模3D打印注意事项
  9. android 后台运行管理,Android 后台运行白名单实现保活
  10. 你技术这么好,总要改变点什么把!
  11. jmeter +ant实现接口的自动生成测试报告
  12. jQuery fadeIn() 方法
  13. python查看微信撤回消息怎么弄_Python | 查看微信撤回的消息(完整代码)
  14. Java实现咖啡馆选餐系统
  15. MySQL 通过子查询批量插入数据
  16. elang mnesia 数据库操作
  17. SK海力士加入日韩美三国财团 收购东芝芯片业务
  18. 极狐GitLab CI 月来袭!2小时 get CI 流水线设计秘籍
  19. 基于豆瓣评价的文本分析 ——以《流浪地球》为例
  20. Python吊打Excel?7年Excel的数据分析师不服

热门文章

  1. 苹果吃鸡显示竞寨服务器超时,吃鸡每次进入显示连接超时 | 手游网游页游攻略大全...
  2. 教师资格证计算机科目有哪些内容,初中教师资格证考试科目有哪些 有什么考试技巧...
  3. AIOps:DevOps 的未来
  4. Linux系统介绍和RHEL7.2操作系统的安装
  5. LED灯丝灯驱动电源芯片方案-输出短路保护特性 调光深度0.1% 外围元件少
  6. kaniko-在k8s集群中构建容器镜像
  7. 为什么css文件是.main,页面无法加载main.css
  8. android判断是否是蓝牙耳机,Android 检测是否连接蓝牙耳机
  9. i5 3470黑苹果efi_I5-4690台式机安装黑苹果实战(四)
  10. Incorrect string value: ‘\xF0\x9F\x90\x9Dlt;/...‘ for column ‘content‘ at row 1