C++笔记(七)--- const

const关键字表示所修饰的变量或函数不可改变

C语言中const

1.const修饰的变量不可改变,故必须定义时初始化
2.const修饰函数,表示函数返回值不可更改
3.const修饰普通参数,表示参数不可修改
4.const修饰的变量不可直接修改,但可以通过指针间接修改(貌似VS2019不可以了,根据实际测试,未能修改成功)
//a.h文件
#include <stdio.h>//const int i;    //报错:error C2734: “i”: 如果不是外部的,则必须初始化常量对象const int i = 1;void fun(void);//main.c文件
#include <iostream>
#include "a.h"using namespace std;void fun(void)
{cout << "Fun : " << i << endl;
}int main()
{fun();int *p = (int *)&i;p = 10;fun();    //理论讲这里应该输出 Fun : 10, 但我实际测试还是 1return 0;
}

C++中的const

1.const修饰的变量需要进行初始化(可以构造函数初始化列表方式初始化,可以定义时初始化)
2.const修饰函数返回值(const放置在函数前面),表示返回值不可更改
3.const修饰函数(const放置在函数后面),表示此函数不能修改类成员变量
class A
{
public:const int i;    //可以在定义时直接初始化,即:const int i = 10;int j;
//    A(){ i = 10; }    //错误,“A::i”: 必须初始化常量限定类型的对象A() : i(10){}    //正确const int fun(void){ return j++ ; }    //此处表示返回值不可修改void f(void) const { cout << "j : " << j << endl; }//此处表示函数 f 为 const//    void add(void) const { cout << "j : " << j++ << endl;}//此处const限定此函数不能对类成员变量修改,因此报错: 由于正在通过常量对象访问“j”,因此无法对其进行修改    
//    void add(void) const { fun(); }    //此处const限定此函数不能对类成员函数修改,因此报错: 不能将“this”指针从“const A”转换为“A &”
//如上两个 add 函数的const 是对函数隐含的this指针进行限定,为方便理解此句话,写如下两个函数进行说明void add(void) { cout << "This Is add!" << endl; }    //下文称 add 函数void add(void) const { cout << "This Is add const!" << endl;}//下文称const  add
//此处两个add函数符合函数重载定义,因为它们实际参数如下:
//add函数实际参数为  void add(A* this)
//const add函数实际参数为  void add(const A* this)
}

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

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

相关文章

浙大版《数据结构学习与实验指导(第2版)》符号配对

符号配对 题目链接 题目描述 请编写程序检查C语言程序中下列符号是否配对&#xff1a;/* 与 */,(与),[与],{与} 输入描述 输入为一个c语言程序的一部分。当读到某一行中只有一个句点“.”和一个回车时&#xff0c;标志着输入结束。程序中需要检查配对的符号不超过2000个。 输…

ChaosBlade故障注入工具--cpu,内存,磁盘占用\IO,网络注入等

前言&#xff1a; 本文介绍一款开源的故障注入工具chaosblade&#xff0c;该工具原本由阿里研发&#xff0c;现已开源&#xff1b;工具特点&#xff1a;功能强大&#xff0c;使用简单。 该工具故障注入包含&#xff1a;cpu&#xff0c;内存&#xff0c;磁盘io&#xff0c;磁盘…

Unity3D 立方体纹理与自制天空盒详解

前言 在Unity3D中&#xff0c;立方体纹理和自制天空盒是常见的技术&#xff0c;它们可以帮助开发者创建出更加真实和引人入胜的游戏场景。本文将详细介绍Unity3D中立方体纹理和自制天空盒的实现方法&#xff0c;希望能帮助读者更好地理解和运用这些技术。 对惹&#xff0c;这…

计算机网络:应用层知识点汇总

文章目录 一、网络应用模型二、域名系统&#xff08;DNS&#xff09;三、文本传输协议&#xff08;FTP&#xff09;四、电子邮件五、万维网和HTTP协议 一、网络应用模型 p2p也就是对等模型 二、域名系统&#xff08;DNS&#xff09; 我们知道&#xff0c;随着人们建立一个网站…

记一次systemd服务启动找不到Java命令

首先systemd服务文件 /etc/systemd/system/test.service(文件简化处理了) [Unit] Descriptiontest Afternetwork.target [Service] ExecStart/opt/test/bin/test_start.sh [Install] WantedBymulti-user.target其中启动命令ExecStart指向的是一个sh启动脚本&#xff0c; 脚本内…

UnityAPI的学习——Random类

Random类是Unity中用于产生随机数的类&#xff0c;不可实例化&#xff0c;只有静态属性和静态方法 Random类静态属性 在Random类中&#xff0c;涉及的静态属性有insideUnitCircle属性、insideUnitSphere属性、onUnitSphere属性、rotationUnitform属性、rotation属性和seed属性…

文生视频Sora模型发布,是否引爆AI芯片热潮

文生视频Sora模型发布&#xff0c;是否引爆AI芯片热潮 1. 引言 在人工智能的历史长河中&#xff0c;每一次技术的飞跃都伴随着社会生产力的巨大变革。自2015年以来&#xff0c;深度学习技术的突破性进展&#xff0c;尤其是在自然语言处理、图像识别和机器学习等领域的成功应…

海外IP代理应用:亚马逊使用什么代理IP?

代理IP作为网络活动的有力工具&#xff0c;同时也是跨境电商的必备神器。亚马逊作为跨境电商的头部平台&#xff0c;吸引了大量的跨境电商玩家入驻&#xff0c;想要做好亚马逊&#xff0c;养号、测评都需要代理IP的帮助。那么应该使用什么代理IP呢&#xff1f;如何使用&#xf…

vue el-avatar 使用require提示无法找到图片

报错信息 错误代码 问题分析 vue初始化DOM树时没有挂载数据,导致无法找到模块 解决方案

抖音商家短视频直播流量变现运营SOP地图

【干货资料持续更新&#xff0c;以防走丢】 抖音商家短视频直播流量变现运营SOP地图 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 抖音运营资料合集&#xff08;完整资料包含以下内容&#xff09; 目录 【提升短视频运营效率的专业指南】 高效运营&#xf…

Springboot实现获取@Value中同字符串从yml加载后的值

问题描述&#xff1a; 自定义注解&#xff0c;希望能够和Value注解使用一样的value值表达式格式从而动态的从yml中获取配置。做到见名知意 测试流程 yml配置 test:abc: aaaaValue注解获取值 Value("2222.kk.${test.abc}.111") private String test;获取自定注解…

leetcode 39题组合总和

# 为什么c方法不用for循环, [:] 索引拷贝的区别 题目地址&#xff1a;https://leetcode.cn/problems/combination-sum/ # 1. 官方c解法&#xff1a; 提交测试了几个用例可以通过 cpp class Solution { public: void dfs(vector<int>& candidates, int target, v…

【安卓(Android)原生与H5开发区别】

安卓&#xff08;Android&#xff09;原生与H5开发 Android原生语言开发&#xff0c;指的是使用Java或Kotlin等编程语言对Android应用程序的用户界面部分进行开发。Android编程语言可以直接调用底层系统的API与功能。H5开发是指使用HTML、CSS和JavaScript等前端技术进行开发&a…

倒计时37天

复习1001. 马走日问题: 1.P1002 [NOIP2002 普及组] 过河卒 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) //日常碎碎念&#xff1a;谁懂啊&#xff0c;dev突然不能用了&#xff0c;也不知道是哪里出了问题下了五六次都不能用&#xff0c;&#xff0c;&#xff0c;找远程安…

1 数据分析概述与职业操守 (3%)

1、 EDIT数字化模型 E——exploration探索 &#xff08;是什么&#xff09; 业务运行探索&#xff1a;探索关注企业各项业务的运行状态、各项指标是否合规以及各项业务的具体数据情况等。 D——diagnosis 诊断 (为什么) 问题根源诊断&#xff1a;当业务指标偏离正常值时&…

题解:CF1927F(Microcycle)

题解&#xff1a;CF1927F&#xff08;Microcycle&#xff09; 一、 理解题意 1. 题目链接 &#xff08;1&#xff09; CF链接 CodeForces-Contest-1927F &#xff08;2&#xff09; LG链接 洛谷-Problem-CF1927F 2. 题目翻译 &#xff08;1&#xff09; 题目描述 给定…

OWL中文文档合集

这些文档是我在2023年学习owl的时候翻译的官方的英文文档&#xff0c;当然在翻译过程中做了分类整理&#xff0c;总共有十篇&#xff0c;基本上涵盖了owl的方方面面&#xff0c;现在将它们归纳成合集。 关于OWL的中文文档&#xff1a; OWL教程1 OWL架构以及为什么要设计OWL h…

【STM32】HAL库 CubeMX教程---基本定时器 定时

目录 一、基本定时器的作用 二、常用型号的TIM时钟频率 三、CubeMX配置 四、编写执行代码 实验目标&#xff1a; 通过CUbeMXHAL&#xff0c;配置TIM6&#xff0c;1s中断一次&#xff0c;闪烁LED。 一、基本定时器的作用 基本定时器&#xff0c;主要用于实现定时和计数功能…

堆排序的应用

堆排序&#xff08;Heap Sort&#xff09;是一种基于比较的排序算法&#xff0c;它利用堆这种数据结构对一组数据进行排序。堆是一个近似完全二叉树的结构&#xff0c;并同时满足堆积的性质&#xff1a;即子节点的键值或索引总是小于&#xff08;或者大于&#xff09;它的父节点…

RAG模型选取

1.Seq_length 根据实际使用时&#xff0c;一般的输出句子长度大小进行判断&#xff0c;如果检索到的一条完整的信息长度较长&#xff0c;则需要能输入长度更长的embedding 2.embedding维度 并非越大越好 根据语义丰富性进行选择&#xff0c;如果各种数据都有&#xff0c;那么…