C++ const成员和引用类型成员

const成员 和 引用类型成员

  • 1.定义
  • 2.const 成员变量
  • 3.const成员函数(非静态)
  • 4.引用类型成员

1.定义

定义:被 const 修饰的成员

被const修饰的成员变量、非静态成员函数

2.const 成员变量

必须初始化(类内部初始化),可以在声明的时候直接初始化赋值
非static的const成员变量还可以在初始化列表中初始化

class Car {
public:

// 两种赋值方法:
	// 在声明的时候直接初始化赋值
	const int m_price;
	// 在初始化列表中初始化
	Car() :m_price(0) {
	}
};

3.const成员函数(非静态)

1.const关键字写在参数列表后面,函数的声明和实现都必须带const
2.内部不能修改非static成员变量
3.内部只能调用const成员函数、 static成员函数
4.非const成员函数可以调用const成员函数
5.const成员函数和非const成员函数构成重载
6.非const对象(指针)优先调用非const成员函数
7.const对象(指针)只能调用const成员函数、 static成员函数

class Car {
public:
	// const int m_price;
	// Car() :m_price(0) {}
	int m_price;

	void run() const {
		cout << "run() const" << endl;

	}

	/*void run() {
		cout << "run()" << endl;
	}*/
};
  • 内部只能调用const成员函数、 static成员函数
    下面错误示例:在run() const中调用成员函数 test(),编译器报错
class Car {
public:
	// const int m_price;
	// Car() :m_price(0) {}
	int m_price;

	void run() const {
		cout << "run() const" << endl;
		// 无法调用
		test();

	}

	void test() {
	}
};
  • const成员函数和非const成员函数构成重载
    下面的 run() 和 run() const 可以构成重载
class Car {
public:
	// const int m_price;
	// Car() :m_price(0) {}
	int m_price;

	void run() const {
		cout << "run() const" << endl;
	}

	void run() {
		cout << "run()" << endl;
	}
};

调用方式:用普通对象调用,调用的是 run();
用 const 创建对象,调用的是 run() const。

int main() {
	Car car;
	car.run();

	const Car car2;
	car2.run();

	getchar();
	return 0;
}

p.s:const 成员函数 和 普通成员函数 的区别就是函数内部的成员变量是否可以修改。

4.引用类型成员

引用类型成员变量必须初始化(不考虑static情况)
在声明的时候直接初始化
通过初始化列表初始化

class Car {
int age;
int &m_price = age;
public:
	Car(int &price) : m_price(price){
	}
};

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

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

相关文章

如何快速学习VCU电控开发

本课程基于实际项目案例和岗位需求技能制定教学大纲&#xff0c;以任务驱动方式引导学员&#xff0c;让学员快速掌握VCU开发知识。首先从VCU开发必备知识点和MATLAB/Simulink软件建模工具的使用入手&#xff0c;夯实学员基础。再通过策略设计、模型搭建和测试标定来指导学员完成…

解救应用启动危机:Spring Boot的FailureAnalyzer机制

目录 一、走进FailureAnalyzer 二、在Spring Boot中如何生效 三、为什么可能需要自定义FailureAnalyzer 四、实现自定义基本步骤 &#xff08;一&#xff09;完整步骤要求 &#xff08;二&#xff09;注册方式说明 通过Spring Boot的spring.factories文件&#xff08;建…

CS03_BOM数据展开

CS03_BOM数据展开 一、功能介绍 使用事务码CS03进行数据展开 二、程序代码 程序代码&#xff1a; *&---------------------------------------------------------------------* *& Report ZMMR119 *&--------------------------------------------------------…

二层交换机与路由器连通上网实验

华为二层交换机与路由器连通上网实验 二层交换机是一种网络设备&#xff0c;用于在局域网&#xff08;LAN&#xff09;中转发数据帧。它工作在OSI模型的第二层&#xff0c;即数据链路层。二层交换机通过学习和维护MAC地址表&#xff0c;实现了数据的快速转发和广播域的隔离。 实…

相亲系统功能介绍

相亲系统是一种旨在帮助单身人士寻找合适伴侣的平台&#xff0c;其主要功能通常包括以下几个方面&#xff1a; 实名认证&#xff1a;为了确保双方的权益保障&#xff0c;用户必须进行实名认证后才能使用该系统。这有助于增加系统的安全性和可信度。偏好选择&#xff1a;用户可…

Android 按键消息流程源码分析

在Android系统中&#xff0c;键盘按键事件是由SystemServer服务来管理的&#xff1b;然后在以消息的形式分发给应用程序处理。产生键盘按键事件则是有Linux kernel的相关驱动来实现。键盘消息有别于其他类型的消息&#xff1b;需要从Linux kernel drivers产生由上层APP来处理。…

数据链路层——以太网协议

一、以太网的MAC帧格式 源地址与目标地址代表的是网卡的硬件地址&#xff0c;MAC 地址&#xff0c;在出厂时已经确定好了。 帧协议类型有三种值&#xff0c;IP0800&#xff0c;ARP 请求及应答0806&#xff0c;RARP 请求/应答8035. MAC地址一般都是唯一的&#xff0c;长度48位&…

Unity Editor 找物体助手

找啊找朋友~ &#x1f371;功能介绍&#x1f959;使用方法 &#x1f371;功能介绍 &#x1f4a1;输入相关字符串&#xff0c;它会帮你找到名称中带有该字符串的所有物体&#xff0c;还会找包含该字符串的Text、TextMeshProUGUI。 &#x1f959;使用方法 &#x1f4a1;导入插…

240多道!Go开发岗位面试题合集(含答案)

随着今年互联网寒潮环境的影响&#xff0c;找工作的人也将达到顶峰&#xff0c;今天给大家分享一份《Go开发工程师超高频面试真题》&#xff0c;一共有240多道面试真题&#xff0c;希望能够帮助大家在面试中&#xff0c;少走一些弯路、更快拿到offer&#xff01; 内容展示 GO 基…

集成逻辑分析器( ILA)IP核用法详解

集成逻辑分析器&#xff08;Integrated Logic Analyzer, ILA&#xff09;IP核是一个可定制的逻辑分析器&#xff0c;用于监测设计的内部信号。ILA核心包含了现代逻辑分析器的许多高级特性&#xff0c;比如布尔触发方程&#xff08;boolean trigger equations&#xff09;和边沿…

gitignore配置不生效记录

第一种可能性&#xff1a; 在你所有的文件都通过了git add . 命令的情况下&#xff0c;使用指令git rm -r --cached .进行缓存清除&#xff0c;完成之后&#xff0c;再次通过git add . 然后通过git status去看提交的文件都有哪些。 第二种可能性 如果上面的不行就是你添加的…

Makefile经验总结

文章目录 0.概述1.常用规则1.1 清空目录的规则1.2 文件搜寻 &#xff08;用起来比较爽&#xff09;1.3 伪目标&#xff08;可用生成多个目标和配置工程删除规则&#xff09;1.4 静态模式&#xff08;用起来也很爽&#xff09;1.5 显示命令&#xff08;有助于调试makefile&#…

[YOLOv8] 用YOLOv8实现指针式圆形仪表智能读数(一)

最近研究了一个项目&#xff0c;利用python代码实现指针式圆形仪表的自动读数&#xff0c;并将读数结果进行输出&#xff0c;若需要完整数据集和源代码可以私信。 目录 &#x1f353;&#x1f353;1.yolov8实现圆盘形仪表智能读数 &#x1f64b;&#x1f64b;2.仪表目标检测…

Sui主网升级至V1.24.1版本

其他升级要点如下所示&#xff1a; GraphQL #17313 不再存在 Live 或 Historical 的 ObjectKind&#xff0c;它们已经合并为单个 Indexed 类型&#xff0c;表示从索引中获取的任何对象&#xff08;而不是我们有相关信息但尚未建立索引的对象&#xff0c; 或者已被删除或包装…

什么才是正确的领域驱动实现架构?

作为一种系统建模方法&#xff0c;DDD同样涉及系统的体系架构设计。区别于分布式、事件驱动、消息总线等架构设计方法&#xff0c;DDD中的架构设计关注前面各章所介绍的聚合、实体、值对象、领域事件、应用服务以及资源库之间的交互方式和风格&#xff0c;并在设计思想上有其独…

创建和管理数据库

1. 一条数据的存储过程 存储数据是处理数据的第一步.只有正确的把数据存储起来&#xff0c;我们才能进行有效的处理和分析.否则&#xff0c;只能是一团乱麻.在MySQL中&#xff0c;一个完整的数据存储过程一共有四步 : 创建数据库&#xff0c;确认字段&#xff0c;创建数据表&a…

[图解]SysML和EA建模住宅安全系统-01

1 00:00:00,980 --> 00:00:03,100 接下来&#xff0c;我们来看一下案例 2 00:00:04,930 --> 00:00:06,750 我们这次课程的案例 3 00:00:07,090 --> 00:00:13,800 选用了SysML实用指南的书上 4 00:00:13,810 --> 00:00:16,180 第十七章这个案例 5 00:00:16,350 …

RSAC 2024现场:谷歌展望大模型在网络安全领域的前景

人类距离将网络安全的控制权交给生成式AI还有多远&#xff1f; 前情回顾RSAC2024动态 伪造内容鉴别厂商Reality Defender斩获2024 RSAC创新沙盒冠军 RSAC 2024上值得关注的10款网络安全产品 RSAC 2024创新沙盒十强出炉&#xff0c;谁能夺冠&#xff1f; 安全内参5月8日消息…

代码随想录算法训练营第二十一天:树树树

代码随想录算法训练营第二十一天&#xff1a;树树树 ‍ 513.找树左下角的值 力扣题目链接​**&#xff08;打开新窗口&#xff09;** 给定一个二叉树&#xff0c;在树的最后一行找到最左边的值。 示例 1: ​​ 示例 2: ​​ #算法公开课 《代码随想录》算法视频公开课…
最新文章