const

作用

  • 修饰变量,说明变量不可以被修改
  • 修饰指针,分为指向常量的指针(pointer to const)和自身是常量的指针(常量指针,const pointer)
  • 修饰引用,指向常量的引用(reference to const),用于形参类型,即避免了拷贝,又避免了函数对于数值的修改
  • 修饰成员函数,说明该成员函数内不能修改成员变量

const指针和引用

指针

  • 指向常量的指针 (pointer to const)
  • 自身是常量的指针 (const pointer)

引用

  • 指向常量的引用 (reference to const)
  • 没有const reference,因为引用本身就是const pointer

被const修饰,(在const的后面)的数值不可以修改

// 类
class A
{
private:const int a;                // 常对象成员,只能在初始化列表赋值public:// 构造函数A() : a(0) { };A(int x) : a(x) { };        // 初始化列表// const可用于对重载函数的区分int getValue();             // 普通成员函数int getValue() const;       // 常成员函数,不得修改类中的任何数据成员的值
};void function()
{// 对象A b;                        // 普通对象,可以调用全部成员函数、更新常成员变量const A a;                  // 常对象,只能调用常成员函数const A *p = &a;            // 指针变量,指向常对象const A &q = a;             // 指向常对象的引用// 指针char greeting[] = "Hello";char* p1 = greeting;                // 指针变量,指向字符数组变量const char* p2 = greeting;          // 指针变量,指向字符数组常量(const 后面是 char,说明指向的字符(char)不可改变)char* const p3 = greeting;          // 自身是常量的指针,指向字符数组变量(const 后面是 p3,说明 p3 指针自身不可改变)const char* const p4 = greeting;    // 自身是常量的指针,指向字符数组常量
}// 函数
void function1(const int Var);           // 传递过来的参数在函数内不可变
void function2(const char* Var);         // 参数指针所指内容为常量
void function3(char* const Var);         // 参数指针为常量
void function4(const int& Var);          // 引用参数在函数内为常量// 函数返回值
const int function5();      // 返回一个常数
const int* function6();     // 返回一个指向常量的指针变量,使用:const int *p = function6();
int* const function7();     // 返回一个指向变量的常指针,使用:int* const p = function7();

C++ const相关内容学习相关推荐

  1. 音频处理相关内容学习——自动编码器——变分自动编码器——频谱图

    文章目录 概述 一.Approaches And Challenges 生成的声音是什么类型 训练模型使用的是什么特征 原始音频Raw Audio 频谱图Spectrograms 声音生成模型常用的结 ...

  2. Gazebo相关内容学习

    什么是Gazebo和ros,以及二者的关系? Gazebo是一个不错的仿真工具,它使用物理引擎模拟真实的世界,使得我们可以通过仿真的方式从原理上验证算法,计算负载和受力情况,进而指引我们做结构和算法的 ...

  3. ROS 命令以及相关内容学习(二)

    在上一节中我们已经学习了package node topic message 这些的运行方式,下面我们去理解service 的运行方式. 1.sevice 1 #命令 2 rosservice lis ...

  4. Android屏幕保护KeyguardManager相关内容学习

    前阵子收到客户要求,要做一款安卓手机和平板上使用的屏保,其实蛮奇怪的,电脑用屏保倒是见得多了,可是手机不使用的时候关掉屏幕不就OK了吗?话说现在的智能手机电池都不耐用的可怜,还装屏保岂不是很费电.原来 ...

  5. DNS相关内容学习笔记1

    记录dns协议学习中的一些内容,全程无图. 目录 DNS简介 DNS查询过程 DNS缓存 DNS劫持 DoH基本原理 Firefox开启DoH DNS报文格式 DNS几个关键字段 DNS类型字段 DN ...

  6. Maven相关内容学习笔记一:基本配置和使用

    首先必须推荐的这本书<Maven实战> 许晓斌,机械工业出版社 Maven简介 其实使用Maven也有很久时间了,大部分都是别人建好了工程我使用一下,实际上并没有非常详细的使用经验,这次到 ...

  7. let/const相关内容(五)

    1.块级作用域的应用 (一)if-switch-for代码中的应用 ① if语句的代码就是块级作用域 // if语句的代码块是块级作用域 if (true) {var foo = "foo& ...

  8. 学习图神经网络相关内容

    本周学习情况 本周学习任务: 学习图神经网络相关内容 图基本知识(连通分量.度中心性.特征向量中心性.中介中心性.接近中心性.PageRank.HITS)并使用networkx包简单实践. 学习了相关 ...

  9. 数据挖掘课程学习——序列模式发现相关内容调研

    数据挖掘课程学习--序列模式发现相关内容调研 本次实验完成"序列模式发现"的相关内容调研,主要内容包括:什么是序列模式发现:应用在哪些领域:经典的算法有哪些:应用在怎样的数据上:得 ...

最新文章

  1. [转载]在线文档预览方案-Office Web Apps
  2. ant的下载与安装——mybatis学习笔记之预备篇(一)
  3. 【AT987】高橋君【组合数】【莫队】
  4. 【TensorFlow】稀疏矢量
  5. 大学专业:这4个计算机类专业很受欢迎,毕业后薪资待遇高?
  6. 中国慕课java_回收的吸油毡通常应放置一边以备再次使用。
  7. 用Python编写干净 可测试 高质量的代码
  8. mysql 把主键当外键_MySQL主键和外键使用及说明
  9. C#基础知识之读取xlsx文件Excel2007
  10. ACM算法设计---BFS、DFS
  11. 让我们在网页中实现数据库的增删改查~
  12. 在阿里做了五年技术主管,我有话想说
  13. 用C语言画空心三角形
  14. 使用ipad通过usb线连接电脑
  15. linux一台服务器上装两个mysql数据库
  16. 用于CFD的国内3D城市模型获取方法
  17. qpython3l最新版下载_qpython3l
  18. SolidWorks如何编辑今日制造插件生成的齿轮
  19. 每日统计部门人员考勤打卡情况并汇总通知
  20. 使用ROS驱动激光雷达YDLIDAR-G4的详细过程总结(教你避开使用的各种坑....)

热门文章

  1. linux编程参数列表,Linux编程 14 文件权限(用户列表passwd,用户控制shadow,useradd模板与useradd命令参数介绍)...
  2. maven依赖 spark sql_window环境运行spark-xgboost 8.1踩到的坑
  3. 未来计算机论文1500,致未来的自己作文1500字
  4. html多出的空白页怎么删除,word多出一页空白页怎么删除,这4个方法总有一个能解决,真实挂机网赚项目...
  5. hive 窗口函数_Datatist科技专栏 | Hive排序窗口函数速学教程!
  6. 【转】DICOM命令集和数据集解析!!
  7. 【转】Dynamics CRM:“the given key was not present in the dictionary”
  8. SharePoint无代码工作流设计开发实例——交通费报销流程(三)
  9. 34观察者模式(Observer Pattern)
  10. [你必须知道的.NET]第十回:品味类型---值类型与引用类型(下)-应用征途