c++基础(类和对象中)(类的默认成员函数)

目录

一.构造函数(类似初始化)

1.概念

2.构造函数的特点

二.析构函数(类似 销毁对象/空间)

三.拷贝构造函数(类似复制粘贴的一种 初始化 )

1.概念:

2.拷贝构造的特点:

四.赋值运算符重载(类似重命名)


一.构造函数(类似初始化)


1.概念

1.构造函数 是对象实例化时,初始化对象

2.构造函数 自动调用的 特点 就完美的替代的了Init 函数



2.构造函数的特点

1. 函数名与类名相同。
2. 无返回值。(返回值啥都不需要给,也不需要写void,不要纠结,C++规定如此)
3. 对象实例化时系统会 自动调用 对应的构造函数。
4. 构造函数可以重载。(在第五章运算符重载)
5. 如果类中没有显式定义构造函数,则C++编译器会自动生成⼀个无参的默认构造函数,⼀旦用户显式定义编译器将不再生成。
6. 无参构造函数全缺省构造函数、我们不写构造时编译器默认生成的构造函数,都叫做默认构造函数。但是这三个函数有且只有⼀个存在,不能同时存在。
(注意:大多构造函数都要自己写,才符合自己写的预期!)

如果 我们没有 自己 设置构造函数 就会出现:开辟的空间过大的问题

1.正常构造函数(初始话化):

2.没有初始化(不写构造函数),让编译器自己初始化:


二.析构函数(类似 销毁对象/空间)

1. 析构函数名是在类名前加上字符 ~
2. 无参数无返回值。(这里跟构造类似,也不需要加void)
3. ⼀个类只能有⼀个析构函数。若未显式定义,系统会自动生成默认的析构函数
4. 对象生命周期结束时,系统会自动调用析构函数。
5. 跟构造函数类似,我们不写编译器自动生成的析构函数对内置类型成员不做处理,自定类型成员会调用他的析构函数。
6. 自定义类型成员无论什么情况都会自动调用析构函数

注意:(析构函数大多要自己写,如果不自己写,可能会出现内存泄漏等严重问题!!!)

 比如:销毁一个栈:


三.拷贝构造函数(类似复制粘贴的一种 初始化 )

1.概念:

        如果⼀个构造函数的第⼀个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数也叫做拷贝构造函数,也就是说拷贝构造是⼀个特殊的构造函数。

2.拷贝构造的特点:

1. 拷贝构造函数 是 构造函数的⼀个重载
2. 拷贝构造函数 的参数 第一个参数 必须类类型对象的引用使用传值方式 编译器 直接报错,因为语法逻辑上会引发无穷递归调用
3. C++规定 自定义类型对象进行拷贝 必须调用拷贝构造 ,所以这里自定义类型传值传参和传值返回都会调⽤拷贝构造完成。
4. 若未显式定义拷贝构造,编译器会生成自动生成拷贝构造函数。自动生成的拷贝造 对 内置类型成员变量会 完成值拷贝/浅拷贝(⼀个字节⼀个字节的拷贝)(可能会造成拷贝地址都相同),对自定义类型成员变量 会调用他自己的 自定义类型 的 拷贝构造

(注意:大多拷贝构造函数都要自己写,才符合自己写的预期!)因为跟构造函数类似

正常的拷贝构造:                                          不是 类对象的 引用&  就会报错           


四.赋值运算符重载(类似重命名)

1.运算符重载是具有特名字的函数,他的名字是由operator和后面要定义的运算符共同构成。和其他函数⼀样,它也具有其返回类型和参数列表以及函数体。
2.重载运算符函数的参数个数和该运算符作用的运算对象数量⼀样多。⼀元运算符有⼀个参数,⼆元运算符有两个参数,⼆元运算符的左侧运算对象传给第⼀个参数,右侧运算对象传给第⼆个参数。
3.如果⼀个重载运算符函数是成员函数,则它的第⼀个运算对象默认传给隐式的this指针,因此运算符重载作为成员函数时,参数⽐运算对象少⼀个。
4.运算符重载以后,其优先级和结合性与对应的内置类型运算符保持⼀致

  .*   ::   sizeof   ?:(三目操作符)   .(点) 注意以上5个运算符不能重载。(大家要记⼀下!!!)
5. 重载操作符至少有⼀个类类型参数,不能通过运算符重载改变内置类型对象的含义,如: int operator+ (int x, int y)

6.重载++运算符时,有前置++和后置++,运算符重载函数名都是operator++,无法法很好的区分。C++规定,后置++重载时,增加⼀个int形参,跟前置++构成函数重载,方便便区分。
7.重载<<和>>时,需要重载为全局函数,重载为全局函数把 ostream/istream 放到第⼀个形参位置就可以了,第⼆个形参位置当类类型对象

正常的运算符重载:

前置/后置++ (重载):


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/842775.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB实战】基于UNet的肺结节的检测

数据&#xff1a; 训练过程图 算法简介&#xff1a; UNet网络是分割任务中的一个经典模型,因其整体形状与"U"相似而得名,"U"形结构有助于捕获多尺度信息,并促进了特征的精确重建&#xff0c;该网络整体由编码器,解码器以及跳跃连接三部分组成。 编码器由…

数据结构第一讲:复杂度

数据结构第一讲&#xff1a;复杂度 1.数据结构前言1.1什么是数据结构1.2算法 2.算法效率2.1复杂度的概念 3.时间复杂度3.1案例13.2案例23.3案例33.4案例43.5案例53.6案例63.7案例7 4.空间复杂度4.1案例14.2案例2 5.常见复杂度对比6.轮转数组题目分析6.1优化16.2优化2 博客简介&…

走进MongoDB--update和remove操作

操作任务 1.复制集合s&#xff0c;新集合名称为sbak。在sbak中完成以下操作 2.修改学号为1001同学的年龄为20岁 3.所有男同学的文档增加addr属性&#xff0c;值为“hebei” 4.删除wangwu同学的年龄属性 5.修改zhangsi同学的年龄属性为20&#xff0c;如果没有满足条件的则插…

DNS域名解析轮询过程图解

Q1: 先从本地浏览器/系统DNS缓存查找是否有解析记录 Q2:从本地hosts文件查找解析记录 Q3:如果前2步没有找到本地解析记录 hosts也无记录就从本地域名服务器查找 Q4:本地域名服务器区域缓存记录查找 Q5:查找转发器是否有 Q6--Q7:查找根com顶级域名服务器 Q8: 查找test.com…

力扣 字符串章节 344反转字符串

编写一个函数&#xff0c;将输入字符翻转过来,原地修改 思路 字符串用数组的形式存储&#xff0c;数组长度分奇数和偶数两种 如果长度是奇数&#xff0c;循环到str.size()/2&#xff0c;中间值不动 如果长度是偶数&#xff0c;循环到str.size()/2&#xff0c;全部参与反转 …

【简单介绍Gitea】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! Gitea.🍀 Gitea是一个开源的,轻量级的代码托管解决方案,它是…

收到赵健老师的限量签名书,开心

收到赵老师的亲笔签名&#x1f4d6;&#xff0c;开心一下下[愉快]&#xff0c;由外而内&#xff0c;首先是我喜欢的线装书&#xff0c;展开阅读舒适&#xff0c;手感友好&#xff0c;纸张更是很讲究&#xff0c;密度很高也很温润&#xff0c;应该是进口纸&#xff0c;每个对页的…

Linux主机添加ipv6地址

一、添加网卡ipv6地址 通过命令行添加 ip add add 2001:db8:0:1::102/64 dev ens160 通过编辑/etc/sysconfig/network-scripts/目录下的ifcfg-配置文件添加 TYPEEthernet BOOTPROTOdhcp # 或者指定为 "static" 如果你想要静态配置 DEFROUTEyes IPV4_FAILURE_FAT…

Uniapp基础篇(持续更新)

1. Uni-app常用内置组件 view 视图容器 scroll-view 可滚动视图区域&#xff0c;用于区域滚动。需注意在webview渲染的页面中&#xff0c;区域滚动的性能不及页面滚动。 swiper 滑块视图容器。一般用于左右滑动或上下滑动&#xff0c;比如banner轮播图。 image uniapp官方iam…

萝卜快跑无人出租车是有人远程代驾? 客服:没有人操控

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 近期“萝卜快跑”无人驾驶网约车相关话题引发网友热议。 有网传图片显示&#xff0c;萝卜快跑机器人智控中心&#xff0c;有真人坐在带有方向盘的屏幕前&#xff1b; 有网友认为所谓的无人网约车&am…

Unty 崩溃问题(Burst 1.8.2)

错误代码&#xff1a; Assertion failed on expression: exception SCRIPTING_NULL UnityEngine.StackTraceUtility:ExtractStackTrace () Unity.Burst.BurstCompiler:SendRawCommandToCompiler (string Unity版本&#xff1a;2021.3.17F1&#xff0c;Burst 1.8.2 表现&…

黑马程序员瑞吉外卖Day6小程序空白无显示

做项目时出现问题之druid连接池报错 报错discard long time none received connection. , jdbcUrl : jdbc:mysql://localhost:3306/sky_take_out?serverTimezoneAsia/Shanghai&useUnicodetrue&characterEncodingutf-8&zeroDateTimeBehaviorconvertToNull&use…

Typescript 实现倒计时功能 useCountdown

效果图 代码块 useCountdown.ts import {onUnmounted, reactive, ref, watch} from "vue";type union = days | hours | minutes | seconds | millisecondsexport type Remains = Record<union, number>;/*** 创建一个倒计时** 用法*/ export const useCount…

“七夕之夜”:艺术家刘兰芳、陶玉玲等相约临沂蒙山沂水大剧院

人海信息网山东讯&#xff08;冯爱云、徐婉桦&#xff09; 近日&#xff0c;记者从北京御龙古今艺术剧院山东分院获悉&#xff0c;由该院承办、中国文艺研究会指导、北京御龙古今艺术剧院主办的2024御龙“七夕之夜”演唱会&#xff0c;将在浪漫的七夕前夜——8月9日晚&#xf…

视频压縮大小不影响画质,视频压缩大小不影响画质的软件

在数字化浪潮推动下&#xff0c;视频制作和分享已成为我们生活的一部分。然而&#xff0c;视频文件体积过大常常让分享和存储变得头疼。今天&#xff0c;我们就来聊聊如何在苹果电脑上压缩视频文件大小&#xff0c;让你的视频瞬间瘦身&#xff01; 方法一、 1.下载并安装视频压…

JavaScript 中怎么看数据返回值

文章目录 前言console.log()1. 输出简单的文本2. 输出变量3. 输出表达式的结果4. 输出对象和数组5. 输出多个参数6. 使用模板字符串7. 输出错误信息 alert()基本用法使用场景注意事项 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 我只知道后端程序跑…

记录些MySQL题集(7)

1. 什么是SQL&#xff1f; SQL 的全称是 Structured Query Language&#xff0c;即结构化查询语言&#xff0c;它是用来与关系型数据库管理系统&#xff08;RDBMS&#xff09;交互的语言&#xff0c;包括从表中获取、更新、插入和删除数据&#xff0c;也就是我们常说的增删改查…

【异步爬虫:利用异步协程抓取一部电影】

利用异步协程抓取一部电影 我们把目光转向wbdy. 目前该案例还是可以用的. 我们想要抓取网上的视频资源就必须要了解我们的视频网站是如何工作的. 这里我用91看剧来做举例. 其他网站的原理是一样的. 1.视频网站是如何工作的 假设, 你现在想要做一个视频网站. 也有很多的UP猪…

Kafka Producer发送消息流程之消息异步发送和同步发送

文章目录 1. 异步发送2. 同步发送 1. 异步发送 Kafka默认就是异步发送&#xff0c;在Main线程中的多条消息&#xff0c;没有严格的先后顺序&#xff0c;Sender发送后就继续下一条&#xff0c;异步接受结果。 public class KafkaProducerCallbackTest {public static void mai…

集成excel工具:自定义导入回调监听器、自定义类型转换器、web中的读、捕获文件格式转换错误ExcelDataConvertException

文章目录 I 封装导入导出1.1 定义工具类1.2 自定义读回调监听器: 回调业务层处理导入数据1.3 定义文件导入上下文1.4 定义回调协议II 自定义转换器2.1 自定义枚举转换器2.2 日期转换器2.3 时间、日期、月份之间的互转2.4 LongConverterIII web中的读3.1 使用默认回调监听器3.2…