小tips !!! 构造,析构,拷贝构造知识点总结
构造,析构,拷贝构造核心点总结
构造函数
并不是开空间创建对象 主要完成类对象初始化工作
构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用
在对象的生命周期内只调用一次
特征如下:
1. 函数名与类名相同。
2. 无返回值。
3. 对象实例化时编译器自动调用对应的构造函数。
4. 构造函数可以重载
5.如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成
6,无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只能有一个
析构函数
与构造函数功能相反,析构函数不是完成对象的销毁,局部对象销毁工作是由编译器完成的。而 对象在销毁时会自动调用析构函数,完成类的一些资源清理工作
特征如下:
1. 析构函数名是在类名前加上字符 ~。
2. 无参数无返回值。
3. 一个类有且只有一个析构函数。若未显式定义,系统会自动生成默认的析构函数。
4. 对象生命周期结束时,C++编译系统系统自动调用析构函数
5.编译器生成的默认 析构函数,对会自定类型成员调用它的析构函数
拷贝构造函数
只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰),在用已存在的类类型对象 创建新对象时由编译器自动调用
特征如下:
1. 拷贝构造函数是构造函数的一个重载形式。
2. 拷贝构造函数的参数只有一个且必须使用引用传参,使用传值方式会引发无穷递归调用
无穷递归如下图:
传值引发对象拷贝,继续调用拷贝构造,始终无法完成,只能无限递归调用
3若未显示定义,系统生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷 贝,这种拷贝我们叫做浅拷贝,或者值拷贝,只拷贝成员对象所包含的成员变量 对开辟的内存空间不会进行拷贝
小tips !!! 构造,析构,拷贝构造知识点总结相关推荐
- 《深度探索C++对象模型》读书笔记第五章:构造析构拷贝语意学
<深度探索C++对象模型>读书笔记第五章:构造析构拷贝语意学 对于abstract base class(抽象基类),class中的data member应该被初始化,并且只在constr ...
- c/c++教程 - 2.4.2.1~2 对象的初始化和清理,构造函数和析构函数,构造函数的分类和调用(有参构造,无参构造,普通构造,拷贝构造,括号法,显示法,隐式转换法,匿名对象)
目录 4.2 对象的初始化和清理 4.2.1 构造函数和析构函数 4.2.2 构造函数的分类及调用 相关教程 4.2 对象的初始化和清理 生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候 ...
- 构造、拷贝构造、赋值、析构
需要注意的问题(当数据成员函数指针型变量,需要申请空间赋值时) 1.构造函数 ①需要给空指针申请一个'\0'的空间 2.拷贝构造函数 ①传入的参数,必须引用传递否则会出现无休止的拷贝构造 ②对其参数值 ...
- 《深度探索C++对象模型》--5 构造析构拷贝 6 执行期语意学
<深度探索C++对象模型>--5构造.析构.拷贝语意学 1.纯虚函数: (1)C++可以定义和调用一个纯虚函数,不过只可以静态调用,不可以由虚拟机制调用. 注意:pure virtu ...
- C++中的trivial和non-trivial构造/析构/拷贝/赋值函数及POD类型
在侯捷的<STL源码剖析>里提到trivial和non-trivial及POD类型,相关知识整理如下. trivial意思是无意义,这个trivial和non-trivial是对类的四种函 ...
- Effective C++学习笔记——构造/析构/拷贝运算
条款9:决不再构造和析构过程中调用virtual函数,包括通过函数间接调用virtual函数. 应用:想在一个继承体系中,一个derived class被创建时,某个调用(例如生成相应的日志log)会 ...
- c++: 移动构造/赋值 和 拷贝构造/赋值
Copy Constructor vs. Assignment https://blog.csdn.net/u013904227/article/details/107441848 [阅读原文] 这篇 ...
- 派生类的拷贝构造【C++继承】
语法 拷贝构造顺序 图示 说明 拷贝构造顺序 拷贝构造实例 语法 派生类::派生类(const 派生类& another):基类(another),派生类新成员(another.新成员) {/ ...
- C++ 拷贝构造 与 赋值运算符重载
拷贝构造 当我们创建了一个对象时,想让它的内容和一个已经创建好的对象的内容相同,那么就必须用到拷贝构造.拷贝构造编译器也会自动生成,也是C++类中的6个默认函数之一. 拷贝构造函数格式类名(const ...
最新文章
- 推荐|5种商业AI产品的技术架构设计!
- 如何在命令行下更改ip地址
- Rust 阴阳谜题,及纯基于代码的分析与化简
- js 点击侧边栏展示内容_上海SEO优化网站侧边栏一般添加什么内容
- 关于ODI agent的配置部署
- 宝塔控制面板忘记密码怎么找回?
- 算法:Find First and Last Position of Element in Sorted Array(在有序数组中搜索第一个和最后一个找到的数字)
- Blender 精确建模3D打印注意事项
- android 后台运行管理,Android 后台运行白名单实现保活
- 你技术这么好,总要改变点什么把!
- jmeter +ant实现接口的自动生成测试报告
- jQuery fadeIn() 方法
- python查看微信撤回消息怎么弄_Python | 查看微信撤回的消息(完整代码)
- Java实现咖啡馆选餐系统
- MySQL 通过子查询批量插入数据
- elang mnesia 数据库操作
- SK海力士加入日韩美三国财团 收购东芝芯片业务
- 极狐GitLab CI 月来袭!2小时 get CI 流水线设计秘籍
- 基于豆瓣评价的文本分析 ——以《流浪地球》为例
- Python吊打Excel?7年Excel的数据分析师不服
热门文章
- 苹果吃鸡显示竞寨服务器超时,吃鸡每次进入显示连接超时 | 手游网游页游攻略大全...
- 教师资格证计算机科目有哪些内容,初中教师资格证考试科目有哪些 有什么考试技巧...
- AIOps:DevOps 的未来
- Linux系统介绍和RHEL7.2操作系统的安装
- LED灯丝灯驱动电源芯片方案-输出短路保护特性 调光深度0.1% 外围元件少
- kaniko-在k8s集群中构建容器镜像
- 为什么css文件是.main,页面无法加载main.css
- android判断是否是蓝牙耳机,Android 检测是否连接蓝牙耳机
- i5 3470黑苹果efi_I5-4690台式机安装黑苹果实战(四)
- Incorrect string value: ‘\xF0\x9F\x90\x9Dlt;/...‘ for column ‘content‘ at row 1