3.10——常类型

news/2024/11/19 11:16:46/

常类型的引入,就是为了既保证数据共享又防止数据被改动。常类型是指使用类型修饰符const说明的类型,常类型的变量或对象成员的值在程序运行期间是不可改动的。

常引用

如果在说明引用时用const修饰,则被说明的引用为常引用。如果用常引用作为形参,便不会产生对实参的不希望的更改。

没有加常引用的时候,我们可以通过引用来修改 a的值

如果我们要修改a的值只能通过a来修改

我们常引用的左右九十,防止使用我们的引用名来修改数据,使用了常引用,我们就不可以通过引用名来修改数据。

常对象

如果在说明对象时用const修饰,则被说明的对象为常对象。常对象的数据成员值在对象的整个生存期内不能被改变。

如果我们把p1声明为常对象,我们就不能访问了。

 

说明:

在定义常对象时必须进行初始化,而且不能被更新。

C++不允许直接或间接地更改常对象的数据成员。

C++不允许常对象调用普通的成员函数。

常对象成员

常数据成员 

类的数据成员可以是常量或常引用,使用const说明的数据成员称为常数据成员。如果在一个类中说明了常数据成员,那么构造函数就只能通过成员初始化列表对该数据成员进行初始化,而其他任何函数都不能对该成员赋值。

 

当常数据成员和普通数据成员同时存在的时候,我们也只能用成员数据初始化列表来初始化,我们的普通数据成员也可以采用数据初始化列表初始化。

常成员函数

在类中使用关键字const说明的成员函数为常成员函数,常成员函数的说明格式如下:

返回值类型 函数名(参数表) const;

const是函数类型的一个组成部分,因此在声明函数和定义函数时都要采用关键字const。在调用时不必加const。

说明:

1)常成员函数可以访问常数据成员,也可以访问普通数据成员。常数据成员可以被常成员函数访问,也可以被普通成员函数访问。具体见:

2)如果将一个对象说明为常对象,则通过该对象只能调用它的常成员函数,而不能调用普通的成员函数。常成员函数是常对象惟一的对外接口,这是C++从语法体制上对常对象的保护。

3)常成员函数不能更新对象的数据成员,也不能调用该类中普通成员函数,这就保证了在常成员函数中绝不会更新数据成员的值。

 

错误写法,常成员函数不能更新对象的数据成员。

总结:我们定义的常引用可以防止,利用用于将我们的变量修改了;定义的常对象是在读型的,只能通过常成员函数读取,常成员函数与普通成员函数最大的区别就是,它可以读取常对象。 


http://www.ppmy.cn/news/39819.html

相关文章

【一起啃书】《机器学习》第三章 线性模型

第三章 线性模型 3.1 基本形式 给定由ddd个属性描述的示例x(x1;x2;...;xd){\bf{x}} ({x_1};{x_2};...;{x_d})x(x1​;x2​;...;xd​),其中xix_ixi​是x\bf{x}x在第iii个属性上的取值,线性模型试图学得一个通过属性的线性组合来进行预测的函数&#xff0c…

renderdoc 命令行说明

写在前面 1. 本文说明renderdoccmd、qrenderdoc 这2个命令的常见用法~ 2. renderdoc相关名词 renderdoccmd what,能干嘛 capture选项: launch 一个应用, 用的RENDERDOC_ExecuteAndInject(), 不支持android10及以上的hook&…

「UG/NX」Block UI 集列表SetList

目录 控件说明界面效果公有属性对话框标题 DialogLabel(仅创建)控件灰显 Enable分组 Group(仅创建)控件显隐 Show控件标题 Label国籍文本 AllowInternationalTextInput(仅创建)显示密文 IsPassword(仅创建)本地化 Localize(仅创建)保存值 RetainValue属性界面代码实现…

数据仓库、数据集市、数据湖,你的企业更适合哪种数据管理架构?

建设企业级数据平台,首先需要了解企业数据,确认管理需求,并选择一个数据管理架构。那么面对纷繁复杂的数据来源,多元化的数据结构,以及他们的管理使用需求,企业数据平台建设该从何处入手呢?哪个…

SQL 学习 day1

day1 SQL 学习 1. 数据库概述 database: .数据持久化 - 将数据保存到能够⻓久保存数据的存储介质中,在掉电的情况下数据也不会丢失 excel 在数据体量方面有限,且解决问题的方法较为麻烦 数据库优点:不关注底层的存储细节、高效的数据访问…

vscode 配置编译调试环境

这里记载一下配置vscode调试和编译的tips。 VScode配置文件 在使用“运行和调试”的时候,往往会在".vscode"下生成两个文件: launch.jsontasks.json launch.json launch.json是运行和调试的入口,在“运行和调试”选项的上方&a…

POSIX正则表达式

维基百科 POSIX基本表达式 https://en.wikibooks.org/wiki/Regular_Expressions/POSIX_Basic_Regular_Expressions POSIX扩展正则表达式 https://en.wikibooks.org/wiki/Regular_Expressions/POSIX-Extended_Regular_Expressions 正则表达式 https://en.wikipedia.org/wiki/R…

chapter-2数据库基本知识

以下课程来源于MOOC学习—原课程请见:数据库原理与应用 考研复习 前言: 抽象与模型 1.对数据不同抽象层次中的对象采用不同的模型进行描述 人的姓名、性别—>概念模型---->DBMS支持的数据模型---->物理模型 2.概念模型:按用户观…