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

news2024/9/20 21:50:43

目录

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

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 放到第⼀个形参位置就可以了,第⼆个形参位置当类类型对象

正常的运算符重载:

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


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(四)-无人机认证与授权

引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别、跟踪及A2X&#xff08;Aircraft-to-Everything&#xff09;服务的支持。 3GPP TS 23.256 技术规范&#xff1a; 【免费】3GPPTS23.256技术报告-无人机系…

Linux系统之快速部署小游戏合集网站(二)

Linux系统之快速部署小游戏合集网站(二) 一、项目介绍1.1 项目简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、检查本地环境3.1 检查系统版本3.2 检查系统内核版本3.3 检查软件源四、安装Apache24.1 安装Apache2软件4.2 启动apache2服务4.3 查看apach…

Leetcode3211. 生成不含相邻零的二进制字符串

Every day a Leetcode 题目来源&#xff1a;3211. 生成不含相邻零的二进制字符串 解法1&#xff1a;回溯 可以使用回溯得到所有长度为 n 的有效字符串。 字符串的每个位置都需要填入 0 或 1。对于 0≤i<n&#xff0c;如果 i0 或字符串的下标 i−1 处填入 1&#xff0c;则…

python一维表转二维表

一维表转二维表 import pandas as pd # 读取数据 product_df pd.read_csv(rD:\excelFile\practice\物品属性值一维表.csv,encodingutf-8) # print(product_df)# 将一维表转变二维 s pd.Series(list(product_df[属性值]),index[product_df[物品编号],product_df[属性名]]) …

Langchain[6]-LangGraph:异步和流、图可视化、多智能体协作、LCEL代码生成

Langchain[6]-LangGraph:异步和流、图可视化、多智能体协作、LCEL代码生成 1.异步和流 因为任何大模型在推理的时候,都会有一定的时间延迟,这是由大模型的底层架构决定的,所以在很多应用,尤其是对话应用中,使用异步以及流式输出,是大幅提升用户体验的较好方法。 在langG…

产品经理-​统计数据是如何产生的(20)

在互联网当中,监测一个项目的实际情况,在产品当中,往往需要进行数据的监测,看用户的习惯,进而进行对产品进行优化,比如统计产品用户的一些行为,鼠标点击,鼠标hover,停留时长,进入,进出等 产品经理看到的数据统计一般是经历了下面几个阶段 数据埋点&#xff1a;这个阶段产品经理…

Leetcode215. 数组中的第K个最大元素

我们也可以使用堆排序来解决这个问题——建立一个小根堆&#xff0c; 遍历数组将元素入堆&#xff1b;如果当前堆内元素超过 k 了&#xff0c;我们就把堆顶元素去除&#xff0c;即去除当前的最小值。因此我们在元素入堆的过程中&#xff0c;不断淘汰最小值&#xff0c;最终留在…

《从C/C++到Java入门指南》- 7.浮点数运算

浮点数运算 引言 浮点数在计算机中难以进行精确表示&#xff0c;例如&#xff1a;0.1 换算成二进制是一个无限循环的小数&#xff0c;无论是double 还是float&#xff0c;都只能存储一个近似的值。但是0.5却可以进行精确的表示。 误差 浮点数的运算时常伴有误差&#xff1a…

RHCE(免密登录+web服务器)之小试牛刀

1、配置linux客户端免密登录服务端linux主机的root用户 2、配置web服务器&#xff0c;当访问网站www.haha.com时显示&#xff1a;haha 3、配置web服务器&#xff0c;当访问网站www.xixi.com/secret/显示&#xff1a;this is secret 本实验使用RHEL9.3和Rocky linux8操作系统 RH…

AI赋能下的人体摔倒识别技术:深度解析与应用前景

引言 随着人工智能技术的快速发展&#xff0c;AI赋能的解决方案在各行各业中展现出巨大的潜力。特别是在安全监控和健康护理领域&#xff0c;AI技术的应用不仅提高了效率&#xff0c;还极大地提升了安全性。本文将深入探讨思通数科&#xff08;南京&#xff09;信息技术有限公…

ipv6 基础学习(一)

IPv6 为什么要有IPV6&#xff1f; IPv4地址空间有限&#xff1a;IPv4使用32位地址&#xff0c;最多可提供约43亿个地址。随着互联网设备数量的爆炸式增长&#xff0c;这些地址已经几乎耗尽。 IPv6地址空间庞大&#xff1a;IPv6使用128位地址&#xff0c;可以提供大约3.410^3…

人工智能与机器学习原理精解【2】

文章目录 机器学习基础一般化流程回归线性回归一元线性回归基础斜率的公式克莱姆法则&#xff08;Cramers Rule&#xff09;一、克莱姆法则的基本内容二、克莱姆法则的适用条件三、克莱姆法则的优缺点四、总结 导数与极值的问题 julia实现 最小二乘法原理最小二乘法的原理线性回…

视觉巡线小车——STM32+OpenMV

系列文章目录 第一章&#xff1a;视觉巡线小车——STM32OpenMV&#xff08;一&#xff09; 第二章&#xff1a;视觉巡线小车——STM32OpenMV&#xff08;二&#xff09; 第三章&#xff1a;视觉巡线小车——STM32OpenMV&#xff08;三&#xff09; 第四章&#xff1a;视觉巡…

前端打印如何给打印页加上水印

插件使用相关&#xff1a;vue-print-nb 前端打印的一个实现方案-CSDN博客 示例代码&#xff1a; media print {page {size: auto; //页面大小自动&#xff0c;防止打印版不全margin: 15mm; //页面边距的设定}body{background-image: url(/assets/images/login/logo.png);back…

java高级——Collection集合之Set探索(底层为HashMap实现)

java高级——Collection集合之Set探索 前情提要文章介绍继承结构底层代码&#xff08;一张图你就悟了&#xff09;下期预告 前情提要 上一篇文章我们探索了HashMap&#xff0c;详细解说了哈希冲突&#xff0c;红黑树以及Map底层到底是怎么实现的&#xff0c;这一篇我们简单说一…

三字棋游戏(C语言详细解释)

hello&#xff0c;小伙伴们大家好&#xff0c;算是失踪人口回归了哈&#xff0c;主要原因是期末考试完学校组织实训&#xff0c;做了俄罗斯方块&#xff0c;后续也会更新&#xff0c;不过今天先从简单的三字棋说起 话不多说&#xff0c;开始今天的内容 一、大体思路 我们都知…

开源模型应用落地-FastAPI-助力模型交互-进阶篇-RequestDataclasses(三)

一、前言 FastAPI 的高级用法可以为开发人员带来许多好处。它能帮助实现更复杂的路由逻辑和参数处理&#xff0c;使应用程序能够处理各种不同的请求场景&#xff0c;提高应用程序的灵活性和可扩展性。 在数据验证和转换方面&#xff0c;高级用法提供了更精细和准确的控制&#…

Springcloud之gateway的使用详解

官网地址&#xff1a;https://docs.spring.io/spring-cloud-gateway/docs/4.0.4/reference/html/ 1.网关入门 helloword 网关不依赖start-web 导入的pom&#xff1a; <!--gateway--> <dependency><groupIdorg.springframework.cloud</groupId><arti…

CKS-Kubernetes-证书题库总结

证书如下 个人考试总结 第一次考试 成绩如下&#xff0c;其实这一次我题目全做了&#xff0c;个人感觉也没有什么错误&#xff0c;但是环境做错了 7月14日CKS考试笔记 问题分析 你这次考试得了57%。 至少需要67%的分数才能通过。 对您完成的考试的自动分析显示了三个得分最…

【深度学习】起源:人脑的神经结构

文章目录 睁眼看世界&#xff0c;倾耳听人间脑子&#xff0c;是个好东西&#xff01;眼睛成像其它身体感触系统脑子&#xff1a;我很忙的&#xff01;脑细胞&#xff1a;脑子里的打工人生物神经元——结构生物神经元——人脑的运算单位 人脑的深度学习总结 睁眼看世界&#xff…