3.10——常类型

news2024/12/25 13:19:46

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

常引用

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

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

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

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

常对象

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

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

 

说明:

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

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

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

常对象成员

常数据成员 

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

 

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

常成员函数

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

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

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

说明:

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

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

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

 

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

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

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

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

相关文章

adb环境变量配置

adb环境变量配置Android一. 简介二. 环境变量配置1.JDK安装2.SDK安装3. 资源共享4. 配置环境变量4.1 方式一:4.2 方式二:5. adb常用命令的使用6. 结果Android List of ADB Commands and Fastboot Commands for Android 如果你是一个android用户&#xf…

paddleocr,windows pip 安装巨坑 lanms 库

安装 lanms 最佳参考: paddleocr,windows pip 安装巨坑 lanms 库 防丢失,直接抄录的一份 paddleocr最后几个库一个比一个难装,特别是 lanms 库,巨难装,拒绝任何花里胡哨,十分钟,三步…

HTML5 <menu> 标签

HTML5 <menu> 标签 实例 HTML5 <menu>标签用于定义菜单列表。 两个菜单按钮系列选项实例&#xff08;"File" 和 "Edit"&#xff09;&#xff1a; <menu type"toolbar"> <li> <menu label"File"> &…

Linux-初学者系列——篇幅4_系统运行相关命令

系统运行相关命令-目录一、关机重启注销命令1、重启或者关机命令-shutdown语法格式&#xff1a;常用参数&#xff1a;01 指定多久关闭/重启系统02 指定时间关闭/重启系统03 实现立即关闭/重启系统04 取消关闭/重启系统计划2、重启或者关机命令-halt/poweroff/reboot/systemctl语…

Lucene Solr Elasticsearch三者之间的关系,怎么选?

Lucene简介&#xff1a; Lucene主要用于构建文本搜索应用程序&#xff0c;包括Web搜索引擎、桌面搜索工具和商业应用程序。它提供了诸如单词分析、查询解析、搜索结果排序等功能&#xff0c;可以轻松地在大量文档中快速搜索和查找相关信息。 Lucene具有以下特点&#xff1a; …

Linux -- 进阶 Web 服务器 基础前瞻 ( 一 )

目录 WWW 简介 &#xff1a; 组件一个网站得需要哪些东西呢 &#xff1f;&#xff1f; 1 得有 响应用户申请网页服务 的软件 2 服务器主机 3 那就需要数据了 4. 浏览器 预备知识 &#xff1a; 网址及HTTP 简介 &#xff1a; URL : http 请求方法 &#xff1a;…

关于使用云渲染的五大优势

在不影响质量或性能的情况下节省时间、金钱和资源&#xff0c;对于需要在通常较短且严格的期限内创建高质量 3D 内容的专业人士来说&#xff0c;云渲染都是最好的选择&#xff01;云渲染作为数字媒体生产的最新趋势&#xff0c;与传统的渲染农场和机器相比具有许多优势&#xf…

每个程序员都应该知道的 5 个基本 Matlab 提示和技巧

当今软件开发和数据分析领域中&#xff0c;Matlab 是一种十分常用的工具。然而&#xff0c;对于许多程序员而言&#xff0c;它的高级特性可能并不为人所知。在本文中&#xff0c;我们将分享每个程序员都应该知道的 5 个基本 Matlab 提示和技巧&#xff0c;以帮助你更好地使用这…

【红队APT】反朔源流量加密CSMSF证书指纹C2项目CDN域前置

文章目录背景交代&#xff1a;常见红蓝对抗中红队面临问题&#xff1a;蓝队发现处置情况&#xff1a;NC-未加密&加密后-流量抓包对比MSF-流量通讯特征修改-证书-openssl解决HTTPS-SSL通讯证书被特征标示问题impersonate_ssl模块CS-流量通讯特征修改-证书指纹-keytool1.修改…

【C++】哈希的应用——bitset(STL)位图

哈希的应用——bitset(STL)位图 文章目录 哈希的应用——bitset(STL)位图一、bitset的介绍1.位图的引入2.位图的概念3.位图的应用 二、bitset的使用1.bitset的构造方式2.bitset成员函数的使用3.bitset运算符的使用 三、bitset位图的模拟实现1.位图的基本框架2.成员函数2.1.构造…

【Linux】进程学习(1)---理解进程概念

文章目录 冯诺依曼体系结构理解冯诺依曼体系结构 操作系统概念与定位概念计算机管理模型计算机的软硬件体系结构图系统调用和库函数概念 进程基本概念描述进程--PCBtask_struct内容分类组织进程 冯诺依曼体系结构 数学家冯诺依曼提出了计算机制造的三个基本原则&#xff0c;即采…

gnome换回纵向切换工作区

效果&#xff1a; 思路 最新的debian / ubuntu中用的gnome 4.x&#xff0c;工作区切换变成了左右切换&#xff0c;习惯了上下&#xff0c;真的很不舒服。 而且优化选项里也把设置开关取消掉了&#xff0c;解决方案是使用Vertical overview这个扩展&#xff1a; ## 安装扩展管…

5.1 大数定律

我的理解&#xff1a; 大数定律的基本思想是&#xff1a;当我们有足够的样本数量时&#xff0c;样本的平均值可以相对准确地估计总体的平均值。这是因为随着样本数量的增加&#xff0c;样本平均值的波动会逐渐减小&#xff0c;从而趋向于总体平均值。 我们可以通过一个简单的…

rk3568-rk809电池电量计

简介&#xff1a; RK809 集成在RK3568上的一个高性能的 PMIC&#xff08;(Power Management IC):电源管理集成电路&#xff09;&#xff0c;PMIC全称Power management integrated circuit&#xff0c;一般情况下是一颗独立于主控的芯片&#xff0c;集成了电源控制&#xff0c;电…

Docker源码阅读总结

Docker总架构图 客户端-服务器架构以及请求的发送&#xff0c;解析等原理不再赘述&#xff0c;这不是我们学习docker的重点。我们知道&#xff0c;Docker提供给了我们一个在隔离环境中运行的进程&#xff0c;那么我其实想深入探究的是 容器的网络是怎么在这个隔离的环境中与其…

【花雕学AI】如何避免ChatGPT封号,安全稳定地使用ChatGPT的技巧和简单过渡办法

虽然ChatGPT 目前已经不是测试期了&#xff0c;它在 2021 年 11 月正式推出&#xff0c;并且在 2021 年和 2022 年后进行了多次更新&#xff0c;提升了真实性和数学能力等方面。但是&#xff0c;ChatGPT 的运算压力仍然很大&#xff0c;因为它需要处理海量的数据和请求&#xf…

ASUS ZenBook Duo 14 UX481电脑 Hackintosh 黑苹果efi引导文件

原文来源于黑果魏叔官网&#xff0c;转载需注明出处。&#xff08;下载请直接百度黑果魏叔&#xff09; 硬件型号驱动情况 主板ASUS ZenBook Duo 14 UX481 处理器• Intel Core i7-10510U • Intel Core i5-10210U 已驱动 内存Internal 4GB 2666 Changeable 8GB 2666 mem…

【WCH】CH32F203基于硬件I2C + SSD1306 OLED跑图形库

【WCH】CH32F203基于硬件I2C SSD1306 OLED跑图形库 &#x1f388;基于STM32图形库开源项目地址&#xff1a;https://github.com/hello-myj/stm32_oled&#x1f4cc;相关篇《【WCH】CH32F203硬件I2C驱动SSD1306 OLED》&#x1f4cd;《【WCH】CH32F203软件I2C驱动SSD1306 OLED》…

CountDownLatch背后的原理

前言&#xff1a; 在日常工作中常用到多线程&#xff0c;如果使用多线程处理那么就要考虑同步问题&#xff0c;一般我们会考虑使用加锁来解决。但是还有一些场景&#xff0c;如下&#xff1a; 场景&#xff1a;小升初考试&#xff0c;考生做题&#xff0c;监考老师要等待所有考…

论文阅读【2】-SepViT: Separable Vision Transformer论文结构漫谈与Python实现测试

可分离卷积ViT实现轻量级transformer结构1. 论文主要工作1.1 摘要内容1.2 写作动机&#xff08;Motivations&#xff09;1.2.1 Transformer Patch结构的巨大计算量问题1.2.2 Swin&#xff1a;针对计算量的优化1.2.3 Twins&#xff1a;针对边缘端部署优化1.2.4 Cswin&#xff1a…