[C++ ]:5.类和对象中(运算符重载补充)+ 类和对象下(初始化列表)

news2024/11/29 0:33:48

类和对象中(运算符重载补充)+ 类和对象下(初始化列表)

  • 一.运算符重载补充:
    • 1.流插入运算符:
      • 1.==考虑到隐含的参数指针:==
      • 2.进行优化!
        • 2-1:解决办法:友元
        • 2-2:流插入一定满足连续?
      • 3.总结:
    • 2.流提取运算符:
  • 二.const 成员:
      • 1.概念进入:
      • 2.具体操作:
      • 3.参数变化:
        • 3-1:权限下降!
      • 4.成员函数const 原则:
  • 三.构造函数补充:
    • 1.初始化:
    • 2.初始化列表:
    • 3.作用:
      • 1.const的初始化:
      • 2.引用的初始化:
      • 3.自定义类型成员的初始化:
        • 3-1.自定义类型初始化列表:
        • 3-2.所有都可以使用初始化列表?
      • 4.初始化列表的顺序!
    • 4.总结:
      • 1.引用,const,没有默认构造的自定义类型成员!
      • 2.自定义类型的成员有显示的构造函数!
      • 3.尽量使用初始化列表因为不使用也会走到初始化列表中!
        • 3-1:

一.运算符重载补充:

请添加图片描述

1.流插入运算符:

我们知道进行运算符重载这个函数的参数的左右类型是非常重要的,我们尝试在类中去定义这个流插入重载!

1.考虑到隐含的参数指针:

请添加图片描述

2.进行优化!

我们观察上面的代码发现可以实现在类中进行流插入运算符的一个重载但是我们需要考虑隐含参数的位置所以我们进行传参的时候就 写成了 == d1<<cout ==.

上面这个语句是非常奇怪的因为我们之前使用cout的时候把类型的数据插入到cout中但是上面这个就是把cout插入到d1中这是不好的!

请添加图片描述

没有人规定类的操作符必须要写在类中!
我们把函数定义到全局中-》出现了一个问题我们在全局中是找不到成员变量的!我们成员变量是私有的我们不希望成员变量不去使用成员函数而发生改变!

2-1:解决办法:友元

通过friend 关键字去在类中声明一个友元函数就可以解决,我是你的朋友可以访问私有的成员变量!

在这里插入图片描述

2-2:流插入一定满足连续?

我们通过前面的知识我们知道满足连续性这个函数就需要一个返回值!

在这里插入图片描述

3.总结:

其他的运算符一般是实现在成员函数中,但是流插入和流提取操作符是实现在全局的。

1.因为存在隐含的参数(影响了操作符的顺序)。
1-1:写在全局改变了函数传参的顺序并且满足了正常的cout的使用顺序!

2.写到全局访问不到私有的问题?
2-1:友元解决!

2.流提取运算符:

请添加图片描述
请添加图片描述
请添加图片描述

二.const 成员:

1.概念进入:

请添加图片描述

我们观察上面的代码会发现?
我们定义了一个const Date 类型的d2是不想要d2这个日期对象被修改但是我们的隐含参数默认是一个Date* 类型,所以参数列表不匹配!

通过将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。

2.具体操作:

请添加图片描述
请添加图片描述

需要特别注意成员函数定义和声明分开的时候const都需要加上和缺省参数不一样!

3.参数变化:

请添加图片描述

3-1:权限下降!

请添加图片描述

4.成员函数const 原则:

1.可以定义成const 的成员函数都应该定义,这样const 和非const 对象都可以调用。
2.如果不去定义const 那么const类型的对象就不可以去进行成员函数调用!
3.如果有需要修改成员变量的函数不可以使用const去修饰!

三.构造函数补充:

1.初始化:

我们之前通过构造函数去初始化成员变量其实是一种赋值!

虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函数体中的语句只能将其称为赋初值,而不能称之初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。

2.初始化列表:

初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。

在这里插入图片描述

3.作用:

1.const的初始化:

请添加图片描述

2.引用的初始化:

我们知道引用是必须需要初始化,第一次是地址,之后都是赋值!所以我们不可以让引用类型的成员变量在赋值的时候再去拿到别的值! 不然会产生赋值之后的这个成员变量到底是谁的别名! 通过在初始化列表进行初始化我们再去赋值我们就知道这个引用是谁的别名。

请添加图片描述

3.自定义类型成员的初始化:

请添加图片描述

我们通过初始化列表就可以自己搞定初始化一个队列!

3-1.自定义类型初始化列表:

通过初始化列表自己去调用对应的构造函数去完成我们想要多大的栈就可以初始化多大的栈!

请添加图片描述

3-2.所有都可以使用初始化列表?

我们不能完全舍弃构造函数初始化!因为对于构造函数来说处理栈空间开辟是否成功等比较长的代码上是比较有优势的。初始化列表没有办法去判断栈空间是否开辟成功!

请添加图片描述

4.初始化列表的顺序!

初始化列表要和类的成员变量定义顺序相同!
在这里插入图片描述

4.总结:

1.引用,const,没有默认构造的自定义类型成员!

在这里插入图片描述

2.自定义类型的成员有显示的构造函数!

请添加图片描述

3.尽量使用初始化列表因为不使用也会走到初始化列表中!

3-1:

80%----100% 使用初始化列表:
0%-20% 进行初始化列表+构造函数的混和使用!

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

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

相关文章

Redis 分片集群

目录 ​编辑一、搭建分片集群 1、集群结构 ​编辑 2、准备实例和配置 3、启动 4、创建集群 二、散列插槽 三、集群伸缩 四、故障转移 1、自动故障转移 2、手动故障转移 五、RedisTemplate 访问分片集群 一、搭建分片集群 1、集群结构 主从和哨兵可以解决高可用、高…

01-SDV全域OS研发思考

背景 近年来&#xff0c;随着汽车“新四化”浪潮的兴起&#xff0c;软件定义已成为产业共识&#xff0c;将深度参与到整个汽车的定义、开发验证销售以及服务全过程。一方面确保软件可升级&#xff0c;跨车型、软件甚至跨车企软件重用。另一方面对于硬来讲&#xff0c;要做到可…

PlantSimulation安装帮助文档端口被占用的解决办法

PlantSimulation安装帮助文档端口被占用的解决办法 从PlantSimulaiton&#xff08;TPS&#xff09;2201开始帮助文档开始使用在线&#xff0c;如果使用本地则需要安装本地文档服务器。但是在安装过程中你可能会遇到&#xff0c;5000断开被占用的情况。解决办法如下&#xff1a…

UTONMOS:元宇宙顺势而上,重构数字化发展新形态

元宇宙&#xff08;Metaverse&#xff09;是一个虚拟的、且与现实世界平行的虚拟世界&#xff0c;由一系列相互关联的技术组成。在这个虚拟世界中&#xff0c;人们可以通过 VR、 AR等设备进入其中&#xff0c;与虚拟人物进行互动。 随着新一代信息技术的飞速发展&#xff0c;元…

将函数模板作为拷贝构造函数

目录 前言 一.认识pair 二.创建一个mypair对象 二.用mypair对象去初始化另一个mypair对象 三.全局的函数模版make_pair 四.map中的insert函数 五.验证 ​​​​​​​前言 当一个类的成员变量有自定义类型时&#xff0c;我们可以考虑将构造函数设为模板&#xff0c;这…

北斗卫星显身手,铁路作业人员安全防护再升级

北斗卫星显身手&#xff01;铁路作业人员安全防护再升级 在铁轨上忙碌的铁路作业人员&#xff0c;承载着运输与交通的重任&#xff0c;他们的辛勤付出为我们的生活提供了便利。然而&#xff0c;背后也隐藏着一系列的安全隐患和风险。为了确保铁路作业人员的安全&#xff0c;保障…

【实践篇】一次Paas化热部署实践分享 | 京东云技术团队

前言 本文是早些年&#xff0c;Paas化刚刚提出不久时&#xff0c;基于部门内第一次Paas化热部署落地经验所写&#xff0c;主要内容是如何构建一些热部署代码以及一些避雷经验。 一、设计-领域模型设计 1.首先&#xff0c;确定领域服务所属的领域 2.其次&#xff0c;确定垂直…

图解Linux内核进程调度系统

目录 1.进程调度系统 2.调度类 3.调度策略 4.调度实体 5.调度器 6.CPU运行队列 1.进程调度系统 Linux进程调度是操作系统内核中的一个重要组成部分&#xff0c;它负责决定哪个进程可以在CPU上运行。 进程调度的目标是合理分配CPU资源&#xff0c;提高系统的整体运行效率…

Java Web 学习笔记(二) —— JDBC

目录 1 JDBC 概述2 JDBC 快速入门3 JDBC API 详解3.1 DriverManager3.2 Connection3.3 Statement3.4 ResultSet3.5 PreparedStatement3.5.1 代码模拟 SQL 注入3.5.2 PreparedStatement 的使用3.5.3 PreparedStatement 原理 4 数据库连接池4.1 数据库连接池概述4.2 数据库连接池…

通讯网关软件034——利用CommGate X2ODBC实现Modbus RTU数据转储ODBC

本文介绍利用CommGate X2ODBC实现从Modbus RTU设备读取数据并转储至ODBC数据源。CommGate X2ODBC是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;实现从Modbus RTU设备读取数据并转储至ODBC…

性价比最高的护眼台灯是哪一款?盘点五款最具性价比的护眼台灯

现在的孩子&#xff0c;不是以往的孩子那么的无忧无虑&#xff0c;他们要考虑的是学习的成绩&#xff0c;所以很多孩子为了能在父母面前能得到夸奖&#xff0c;就努力的学习&#xff0c;那么台灯就不可缺少&#xff0c;但是如今市场上的台灯太多了&#xff0c;如果你购买的台灯…

HTTParty库

HTTParty是一个流行的Ruby库&#xff0c;用于简化HTTP请求和处理响应。它提供了一个简单的接口&#xff0c;可以轻松地发送HTTP请求&#xff0c;并处理返回的数据。 使用HTTParty&#xff0c;你可以&#xff1a; 发送GET、POST、PUT、DELETE等不同类型的HTTP请求。 设置请求头…

二、GRE VPN

GRE VPN 1、GRE介绍2、GRE基本原理3、GRE报文格式4、报文在GRE中传输过程5、价值6、Keepalive检测7、GRE应用8、配置GRE隧道8.1、配置绑定GRE协议的接口8.2、配置Tunnel接口8.3、配置Tunnel路由 9、GRE配置举例9.1、GRE静态路由示例9.1.1、路由器运行动态路由协议实现互通9.1.2…

STM32-HAL库08-TIM的输出比较模式(输出PWM的另一种方式)

STM32-HAL库08-TIM的输出比较模式&#xff08;输出PWM的另一种方式&#xff09; 一、所用材料&#xff1a; STM32F103C6T6最小系统板 STM32CUBEMX&#xff08;HAL库软件&#xff09; MDK5 示波器或者逻辑分析仪 二、所学内容&#xff1a; 通过定时器TIM的输出比较模式得到预…

分析外贸SEO推广流程?网站谷歌SEO优化方法?

外贸SEO推广详细教程&#xff1f;外贸企业站如何做谷歌SEO推广&#xff1f; 外贸SEO推广是国际贸易领域中的一项重要战略&#xff0c;通过优化网站内容和结构&#xff0c;提高搜索引擎排名&#xff0c;从而增加在线可见性&#xff0c;吸引更多国际客户。顺风船将深入分析外贸S…

可回馈式直流电子负载在光伏储能行业的应用

可回馈式直流电子负载在光伏储能行业的应用非常广泛&#xff0c;光伏储能系统主要由光伏阵列、逆变器和储能电池组成直流电子负载作为一个重要的测试设备&#xff0c;可以对光伏储能系统进行性能评估和负载模拟。可回馈式直流电子负载可以用于光伏阵列的性能评估&#xff0c;通…

【Proteus仿真】【Arduino单片机】RGB彩灯

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用WS2812 RGB彩灯等。 主要功能&#xff1a; 系统运行后&#xff0c;RGB彩灯花样显示。 二、软件设计 /* 作者&#xff1a;嗨小易&#xff08;…

【WIFI】关于MTK的射频参数文件CFG_WIFI_Default.h介绍

代码路径: vendor/mediatek/proprietary/custom/<project-name>/cgen/cfgdefault/CFG_WIFI_Default.h 先看下面这张图片,这是修改了国家码 2.4Ghz 5Ghz的配置参数 简单举例: 修改了国家码US改了那2个参数,可以看到一个改了0x55代表U,一个改了0x53代表S 加起…

Elasticsearch 8.X 如何生成 TB 级的测试数据 ?

1、实战问题 我只想插入大量的测试数据&#xff0c;不是想测试性能&#xff0c;有没有自动办法生成TB级别的测试数据&#xff1f;有工具&#xff1f;还是说有测试数据集之类的东西&#xff1f;——问题来源于 Elasticsearch 中文社区https://elasticsearch.cn/question/13129 2…

2023年11月实时获取地图边界数据方法,省市区县街道多级联动【附实时geoJson数据下载】

首先&#xff0c;来看下效果图 在线体验地址&#xff1a;https://geojson.hxkj.vip&#xff0c;并提供实时geoJson数据文件下载 可下载的数据包含省级geojson行政边界数据、市级geojson行政边界数据、区/县级geojson行政边界数据、省市区县街道行政编码四级联动数据&#xff0…