类和对象周边知识

news2024/10/25 22:28:43

再谈构造函数

前几期我们把六个默认成员函数一一说明后,构造函数还有一些周边知识。

初始化列表

我们在没有了解初始化列表的时候一般都是使用构造函数初始化或者在声明哪里给予缺省值,那么为什么好药存在初始化列表呢?是因为①.有些值必须在定义的时候初始化并且②.初始化列表一个变量只能出现一次

初始化列表的格式:
以冒号开始,逗号进行分割,先写成员变量,在用括号把参数括起来。
在这里插入图片描述

初始化列表是每个成员变量定义初始化的位置。有些成员必须走初始化列表:const、引用和自定义类型(有默认构造去调用默认构造,没有默认构造,就需要走初始化列表进行初始化)

隐式类型转化

如下图,两种方式都可以,第一种方式是我们普通的对象创建,第二中这是出现了隐式类型转化,这是因为2可以构造成一个临时对象,然后在通过拷贝构造
在这里插入图片描述
不希望隐式类型转化发生怎么办?在成员函数前加:explicit。

隐式类型转换支持多参数的,可以通过大括号来进行多参数的隐式类型转化。
在这里插入图片描述
注:初始化列表一定要按声明的顺序初始化!!不可以改变位置,某则会导致初始化数据有误。

static成员

在这里插入图片描述

友元函数和友元类

友元函数

注:友元函数慎用,因为相当于走后门。

当我们如果想要重载流提取和流插入操作符的时候,需要定义在类外面,是因为定义在类中就会导致参数顺序与底层实现不一致。那么为了解决这个问题,我们定义到了类外面,但是就导致私有的成员变量我们无法访问,那么这个时候我们就需要将友元函数的声明写到类中即可。

格式:friend+ 函数声明
友元函数的理解:想访问谁的私有成员变量,你就需要在它的里面写友元函数的声明。

那么我们都说慎用友元函数了,怎么解决呢?利用公有的get/set方法,可以替代友元函数。注意:友元函数没有this指针

友元类

在这里插入图片描述

内部类(c++很少有,做了解即可)

在一个类里定义另一个类。(相当于套娃)
那么如果我们用szieof()操作符算一个内部类,他的大小呢?**下图的答案是8。**因为A里面成员变量没有B的成员变量。从内存角度来说,类只是声明。
在这里插入图片描述

内部类的特点:
①. B类会收A类的类域限制。
②.内部类天生就是外部类的友元类。即:内部类可以访问外部类的私有;但是外部类不能访问内部类。

匿名对象

区别:
在这里插入图片描述
特点:匿名函数的生命周期只在当前一行。(当场构造,当场析构)

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

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

相关文章

GAN 网络的损失函数介绍代码

文章目录 GAN的损失函数介绍1.L1 losses2.mse loss3.smooth L14.charbonnier_loss5.perceptual loss (content and style losses)6.Gan损失7.WeightedTVLoss8.完整代码方便使用,含训练epoch代码。 GAN的损失函数介绍 1.L1 losses pixel_opt: type: L1Loss loss_weight: 1.0 r…

Linux Ubuntu部署SVN服务端结合内网穿透实现客户端公网访问

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

2024.3.7

大端存储:高存低,低存高; 小端存储:高存高,低存低; sizeof 用于获取数据类型或变量的大小,strlen 用于获取字符串的长度。 不能改变常量字符串, char *arr"hello"; *ar…

外汇天眼:伦敦金属交易所宣布新的高级领导任命

伦敦金属交易所(LME)今日宣布了多项高级领导职务任命和组织设计变更。 LME的任命将于2024年4月1日生效。 苏珊斯莫尔被任命为总法律顾问,负责监督LME及LME Clear的法律职能。斯莫尔女士将于6月加入,并将向LME及LME Clear的首席执…

JEDEC标准介绍及JESD22全套下载

JEDEC标准 作为半导体相关的行业的从业者,或多或少会接触到JEDEC标准。标准对硬件系统的设计、应用、验证,调试等有着至关重要的作用。 JEDEC(全称为 Joint Electron Device Engineering Council)是一个电子组件工程标准制定组织…

2024【问题解决】Github 2024无法克隆git clone自从签了2F2安全协议之后

项目场景:ping通Github但没法clone–502 问题描述 提示:ping通Github但没法clone--502: 例如:git clone https://gitclone.com/l.git/*** $ git clone https://github.com/darrenpig/Yocto Cloning into Yocto_tutorial... fatal: unable to access https://gitclone.co…

计划任务和日志

一、计划任务 计划任务概念解析 在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份、定期采集监测数据)。RHEL6系统中默认已安装了at、crontab软件…

Freecad Assembly4装配模型设计入门

一、基本信息 本文内容:学习Assembly4装配模型设计功能。 2024年3月7日 最新版Freecad 0.21.2 最新版 Assembly4 0.50.8 下载地址:stoneold/FreeCAD_Assembly4 最新版 Assembly4 示例教程 下载地址:FreeCAD_Examples: Freecad Assmbly4 …

【JDBC】Java连接数据库

目录 JDBC的工作原理JDBC API:JDBC开发步骤加载并注册JDBC驱动:建立数据库连接:创建Statement对象:执行SQL语句:处理结果:Connection接口的常用方法Statement接口的常用方法ResultSet接口的常用方法 SQL注入…

Python读取influxDB数据库

1. influxDB连接 首先用InfluxDBStudio软件连接influxDB数据库来查看所有表: 2. 写sql语句来查询数据 然后和平时写sql查询语句一样,先创建连接client,然后调用其query函数来查询获取数据 self.client influxdb.InfluxDBClient(hostinflu…

冬去春来天气阴晴不定 美食拿捏味蕾安稳换季

俗话说“春打六九头”,3月虽然已经入春,但是天气依然是凉飕飕的 ,冬天春天的换季期,因为天气的变化,尤为痛苦。但是来到了换季期,天气也不总是那么稳定,随着气温的起伏,我们的食欲也…

[技术杂谈]解决右键没有vscode打开选项的问题

问题: 点击鼠标右键没有‘使用vscode打开’的选项。 原因: 在安装时没有勾选相关选项 解决办法: 新建一个reg文件写入下面文件,注意替换自己真实Code.exe路径 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\she…

Linux编程3.4 进程-进程标识

1、相关函数 #include<unistd.h> #include<sys/types.h> pid_t getpid(void); 获得当前进程ID uid_t getuid(void); 获得当前进程的实际用户ID uit_t geteuid(void); 获得当前进程的有效用户ID git_t getgid(void); 获得当前进程的用户组ID pit_t getppid(…

【物联网】-智能社会的分类

万物感知 感知物理世界&#xff0c;变成数字信号 &#xff08;温度、空间、触觉、嗅觉、听觉、视觉&#xff09; 万物互联 将数据变成online&#xff0c;使智能化 &#xff08;宽联接、广联接、多联接和深联接&#xff09; 万物智能 基于大数据和人工智能的应用 &#…

一周学会Django5 Python Web开发-Django5删除视图DeleteView

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计31条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

安装VMWare+创建Linux虚拟机

点击VMware官网进入官网&#xff0c;下载VMware安装包。 一、安装VMware 一、安装VMware软件 &#xff08;1&#xff09;点击下一步 &#xff08;2&#xff09;勾选“我接受许可协议中的条款”&#xff0c;再点 ”击下一步“。 &#xff08;3&#xff09;选择下一步&#xf…

力扣刷题Day11--21. 合并两个有序链表(js)

目录 1&#xff0c;题目 2&#xff0c;代码 2.1迭代思想 2.2递归思想 3&#xff0c;学习与总结 3.1js中的链表类 3.2递归思想 3.3提醒自己 1&#xff0c;题目 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 2&am…

买不到的数目c++

题目 输入样例&#xff1a; 4 7输出样例&#xff1a; 17 思路 一个字&#xff0c;猜。 一开始不知道怎么做的时候&#xff0c;想要暴力枚举对于特定的包装n, m&#xff0c;最大不能买到的数量maxValue是多少&#xff0c;然后观察性质做优化。那么怎么确定枚举结果是否正确呢…

微服务之商城系统

一、商城系统建立之前的一些配置 1、nacos Nacos是一个功能丰富的开源平台&#xff0c;用于配置管理、服务发现和注册、健康检查等&#xff0c;帮助构建和管理分布式系统。 在linux上安装nacos容器的命令&#xff1a; docker run --name nacos-standalone -e MODEstandalone …

Ubuntu环境配置-LinuxQQ篇

本教程下载Linux QQ的版本是linuxqq_3.0.0-571_amd64.deb 一、下载LinuxQQ 直接使用wget命令下载链接&#xff0c;下载文件 wget https://dldir1.qq.com/qqfile/qq/QQNT/c005c911/linuxqq_3.0.0-571_amd64.deb 二、安装LinuxQQ 当下载完成后&#xff0c;运行命令&#xff1a;…