类和对象下
文章目录
- 一、初始化列表
- 1、语法:
- 2、初始化顺序
- 二、static成员
- 三、友元
- 1、友元函数
- 2、友元类
- 四、拷贝对象时的编译器优化
- 例1、
- 例2、
- 例3、
一、初始化列表
1、语法:
初始化列表:
以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式
每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次).类中包含以下成员,必须放在初始化列表位置进行初始化:
1、引用成员变量
2、const成员变量
3、自定义类型成员(且该类没有默认构造函数时)
2、初始化顺序
成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关
小结:
初始化列表的优势:
1、提高程序效率
使用初始化列表可以避免在构造函数内对成员变量进行赋值操作,从而提高程序的运行效率。
2、明确成员变量的初始化顺序
当类中包含多个成员变量时,它们的初始化顺序可能会影响程序的正确性。如果使用赋值符号进行初始化,每个变量都要单独写出其初始化语句,不够直观也容易出错。而使用初始化列表,则能明确规定变量的初始化顺序,减少错误发生的概率。
3、支持常量成员变量和引用类型成员变量的初始化
在构造函数体内部,无法直接对常量成员变量或引用类型成员变量进行初始化。但是使用初始化列表则可以实现这些类型成员变量的初始化。
二、static成员
声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化
特性:
1、静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区
2、 静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明
3.、类静态成员即可用 类名::静态成员 或者 对象.静态成员 来访问
4.、静态成员函数没有隐藏的this指针,不能访问任何非静态成员
5.、静态成员也是类的成员,受public、protected、private 访问限定符的限制
三、友元
1、友元函数
语法: f r i e n d + friend + friend+ 函数声明
友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字
注意:
1、友元函数可访问类的私有和保护成员,但不是类的成员函数
2、友元函数不能用const修饰
3、友元函数可以在类定义的任何地方声明,不受类访问限定符限制
4、一个函数可以是多个类的友元函数
5、友元函数的调用与普通函数的调用原理相同
2、友元类
友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员.比如Time类和Date类,在Time类中声明Date类为其友元类,那么可以在Date类中直接访问Time类的私有成员变量,但想在Time类中访问Date类中私有的成员变量则不行
注意:
友元关系是单向的,不具有交换性
友元关系不能传递
如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。==内部类天生就是外部类的友元类,==外部类对内部类没有任何优越的访问权限,,参见友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所有成员。但是外部类不是内部类的友元
特征:内部类可以定义在外部类的public、protected、private都是可以的
2、注意内部类可以直接访问外部类中的static成员,不需要外部类的对象/类名
3、 sizeof(外部类)=外部类,和内部类没有任何关系
四、拷贝对象时的编译器优化
对于以下一个类,我们接下来看看编译器拷贝对象时做了哪些优化
class A
{
public:A(int a = 0):_a(a){cout << "用数字初始化" << endl;}A(const A& aa):_a(aa._a){cout << "用对象初始化" << endl;}A& operator=(const A& aa){cout << "用一个对象赋值" << endl;if (this != &aa){_a = aa._a;}return *this;}
private:int _a;
};
例1、
例2、
例3、
总结:
文章很短,类和对象下知识点不多,到此就结束了。期待我们下一篇博客见面
相关文章:

类和对象下
文章目录 一、初始化列表1、语法:2、初始化顺序 二、static成员三、友元1、友元函数2、友元类 四、拷贝对象时的编译器优化例1、例2、例3、 一、初始化列表 1、语法: 初始化列表: 以一个冒号开始,接着是一个以逗号分隔的数据成员…...

【云计算•云原生】4.云原生之什么是Kubernetes
文章目录 Kubernetes概念Kubernetes核心概念集群podConfigMap Kubernetes架构master节点的组件worker节点组件 Kubernetes网络架构内部网络外部网络 k8s各端口含义 Kubernetes概念 K8S就是Kubernetes,Kubernetes首字母为K,末尾为s,中间一共有…...

云厂商降价潮背后:来中小企业战场「拼刺刀」
如果说过往云厂商的降价打响的是从C端进军B端的营销战,那么在这一轮降价潮背后,对应的则是云厂商从大型KA客户向中小企业进军的信号,强被集成,强获客。 云厂商又一轮降价潮袭来。 5月16日,移动云宣布部分产品线最高降…...

2-单片机GPIO相关知识点及流水灯和按键采集小实验
目录 小问题 :单片机上电后第一个执行的程序是? 【1】GPIO 1.定义 2.应用 I - Input 输入采集 O - Output 输出控制 3.GPIO结构框图 4.功能描述 输入功能 5.相关寄存器 【2】输出控制实验 实验:点亮一盏LED灯 1.实验…...

基础知识(王爽老师书第一章)
文章目录 基础知识1.1 引言1.2 机器语言1.2 引言汇编语言的产生1.3 汇编语言的组成1.4 存储器1.5 指令和数据1.6 存储单元1.7 CPU对存储器的读写1.8 地址总线1.9 数据总线1.10 控制总线小结检测点1.11.11 内存地址空间1.12 主板1.13 接口卡1.14 各类存储器芯片1.15 内存地址空间…...

非煤矿山电子封条建设算法 yolov8
非煤矿山电子封条建设算法模型通过yolov8网络模型AI视频智能分析技术,算法模型对作业状态以及出井入井人员数量变化、人员睡岗离岗等情况实时监测分析,及时发现异常动态,自动推送生成的违规截图报警信息。现代目标检测器大部分都会在正负样本…...

七大软件架构设计原则详解
目录 1、概述 2、七大设计原则 2.1、开闭原则 2.2、里氏替换原则 2.3、依赖倒置原则 2.4、单一职责原则 2.5、接口隔离原则 2.6、迪米特法则 2.7、合成复用原则 3、最后 VC常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...&…...

【Python入门】Python循环语句(while循环的嵌套应用)
前言 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于Python零基础入门系列,本专栏主要内容为Python基础语法、判断、循环语句、函…...
数据来源和搜集
数据搜集 文章目录 数据搜集1 数据来源1.1 数据的间接来源1.2 间接数据的评价1.3 数据的直接来源 2 调查数据2.1概率抽样2.2 非概率抽样2.3 概率抽样 *vs.*非概率抽样 3 搜集数据的方法4 实验数据4.1 实验组与对照组4.2 实验中的若干问题 1 数据来源 所有统计数据都来源于社会…...

Python入门(七)if语句(二)
if语句(二) 1.if语句1.1 简单的if语句1.2 if-else语句1.3 if-elif-else结构1.4 使用多个elif代码块1.5 使用多个elif代码块 2.使用if语句处理列表2.1 检查特殊元素2.2 确定列表不是空的2.3 使用多个列表 作者:xiou 1.if语句 前面我们理解了…...
[元带你学: eMMC完全解读 2] eMMC协议相关术语与定义
声明 主页:元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言。 个人辛苦整理,付费内容,禁止转载。 所在专栏 《元带你学: eMMC完全解读》 内容摘要 前言 文中列出了常用和不常用的eMMC 术语, 只需要了解常用术语就完全够用, 非常用术语几乎都用不上,只要遇到的…...
预测杭州五一黄金周的旅游出行人数
对于杭州五一黄金周的旅游出行人数的预测,可以从以下几个方面进行考虑。 一、历史数据的分析 杭州作为一个旅游胜地,每年的五一黄金周都吸引了大量的游客前来游玩。历史数据可以为我们提供有用的信息,帮助我们预测今年的旅游出行人数。 1.…...

内防泄密重要,还是外防窃密重要?
内防泄密是组织为防止内部敏感信息未经授权泄露所采取的各种管理与技术措施的总称。它主要针对内部人员的信息访问与操作行为进行管控,减少故意或疏忽泄密事件的发生几率。 内防泄密的工作,通常包括员工管理、权限管控、监控检查、分级保护、离岗管控、技术防护、事…...

ChatGPT:2. 使用OpenAI创建自己的AI网站:1. 初探API
使用OpenAI创建自己的AI网站 如果你还是一个OpenAI的小白,有OpenAI的账号,但想调用OpenAI的API搞一些有意思的事,那么这一系列的教程将仔细的为你讲解如何使用OpenAI的API制作属于自己的AI网站。博主只能利用下班时间更新,进度慢…...
5月17日,今日信息差
1、中老铁路运输货物突破2000万吨。其中,跨境货运量超400万吨,货值达177亿元 2、北京首个5.5G实验基站在昌平区的国际信息港建设开通,5.5G将在速率、时延、连接规模和能耗方面全面超越现有5G,实现下行万兆和上行千兆的峰值速率…...

物联网的体系架构
物联网中常见的计算模式:云计算、边缘计算、雾计算等 云计算:一种利用互联网实现随时随地、按需、便捷地使用共享计算设施、存储设备、应用程序等资源的计算模式。边缘计算:在靠近物或数据源头的网络边缘侧,融合网络、计算、存储…...
Golang交叉编译
Golang交叉编译遇到的问题 交叉编译go支持的平台和版本 交叉编译 go支持的平台和版本 查询命令: go tool dist list显示结果: aix/ppc64android/386android/amd64android/armandroid/arm64darwin/amd64darwin/arm64dragonfly/amd64freebsd/386freebsd/…...

kafka3.x详解
kafka 一、简介1.1、场景选择,与其他mq相比1.2、应用场景1.2.1、流量消峰1.2.2、解耦1.2.3、异步通讯 1.3、消息队列的两种模式1.3.1、点对点模式1.3.2、发布/订阅模式 1.4、Kafka 基础架构 二、安装部署2.1、安装包方式2.2、docker安装方式2.3、docker安装kafka-ma…...

kubectl常用命令|pod生命周期|金丝雀发布|超详细
kubectl常用命令|pod生命周期|金丝雀发布|超详细 一 kubectl常用命令1.1 查看版本信息1.2查看资源对象简写1.3查看集群信息1.4 配置kubectl自动补全1.5node节点查看日志 二 k8s基本信息查看2.1 查看 master 节点状态2.2 查看命令空间2.3 创建和删除命名空间2.4 在命名空间kube-…...

【Linux系统】Linux进程信号详解
Linux进程信号 0 引言1 认识信号1.1 什么是信号1.2 发送信号的本质1.3 信号的处理 2 信号的产生2.1 键盘产生2.2 调用系统函数向进程发送信号2.3 由软件条件产生信号2.4 硬件异常产生信号 3 信号的保存4 信号的处理5 总结 0 引言 本篇文章会从Linux信号的产生到信号的保存&…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...