首页 > 编程语言 >C/C++的const修饰符用法总结

C/C++的const修饰符用法总结

时间:2023-03-16 15:14:38浏览次数:43  
标签:const 常量 int 修饰符 C++ 修改 整型 指针

已经玩了C++三年的菜鸟一枚,因此本文部分内容可能有误,请见谅。

作用:只读,不能修改。

规则:const 默认作用于其左边的东西,否则作用于其右边的东西。从右往左即可读懂。

const applies to the thing left of it. If there is nothing on the left then it applies to the thing right of it.

变量声明:

名字 声明 解释 含义
常量整型 const int a const 修饰 int 为常量整型 不能修改值,必须初始化
常量整型 int const a const 修饰 int 为常量整型 不能修改值,必须初始化
指向常量整型的变量指针 const int *a const 修饰 int 为常量整型,* 作用于常量整型 指针可修改,内容不可修改
指向常量整型的变量指针 int const *a const 修饰 int 为常量整型,* 作用于常量整型 指针可修改,内容不可修改
指向变量整型的常量指针 int* const a const 修饰 * 为常量指针,int 说明是变量整型 指针不可修改,内容可修改
指向常量整型的常量指针 const int* const a 左边的 const 修饰 int 为常量整型,右边的 const 修饰 * 为常量指针 指针不可修改,内容不可修改
指向常量整型的常量指针 int const* const a 左边的 const 修饰 int 为常量整型,右边的 const 修饰 * 为常量指针 指针不可修改,内容不可修改
指向常量整型的常量指针 const int* a const 左边的 const 修饰 int 为常量整型,右边的 const 修饰 * 为常量指针 指针不可修改,内容不可修改
变量指针指向一个指向常量整型的常量指针 int const * const *a 左边的 const 修饰 int 为常量整型,右边的 const 修饰 * 为常量指针,右边的 * 作用于变量,表示这是一个变量指针 指针可修改,指针的指针不可修改,指针的指针内容不可修改
常量指针指向一个指向常量整型的常量指针 int const * const * const a 左边的 const 修饰 int 为常量整型,中间和右边的 const 修饰 * 为常量指针 指针不可修改,指针的指针不可修改,指针的指针内容不可修改
常量引用 const int &a const 修饰 int 为常量整型 不能通过常量引用去修改其引用的值,必须初始化
常量引用 int const &a const 修饰 int 为常量整型 不能通过常量引用去修改其引用的值,必须初始化
引用常量 int &const a 不存在 不存在
常量对象 const MyClass a const 修饰 MyClass 为常量对象 不能修改成员变量的值,只能调用常量成员函数

函数声明:

名字 声明 含义
常量作为函数参数 void MyFun (const int a) 函数内部不允许修改常量的值
常量引用作为函数参数 void MyFun (const int &a) 函数内部不允许修改常量的值
常量成员函数 void MyFun () const 常量成员函数内部不允许修改成员变量,也不允许调用非常量成员函数
返回常量值的函数 const int MyFun () 防止函数返回值作为左值,且作为右值只能为 const int 类型赋值
返回常量引用的函数 const int& MyFun () 防止函数返回值作为左值,且不会调用复制构造函数
返回常量指针的函数 const int* MyFun () 防止函数返回值作为左值,且作为右值只能为 const int 指针赋值
返回指向常量整型的常量指针的函数 const int* const MyFun () 防止函数返回值作为左值,且作为右值能为 const int* const 和 const int 指针赋值

标签:const,常量,int,修饰符,C++,修改,整型,指针
From: https://www.cnblogs.com/Mount256/p/17222616.html

相关文章

  • C++ delete语句
    C++中的五种内存在C++中内存分为五个区:堆、栈、自由存储区、全局/静态存储区和常量存储区。堆区:用户使用new获得的内存在这里。用户需要自行管理其声明周期,也就是说一个......
  • C++ 异常
    C++异常exception《C++Primer中文版第五版》Ch5.61.try语句块和异常处理典型的异常失去数据库连接遇到意外输入如果程序的问题是输入无效,则异常处理部......
  • C++信号量实现线程间同步,windows使用SetEvent,linux使用sem_t,QT测试
     目录windows使用CreateEvent、SetEvent、ResetEvent、WaitForSingleObjectlinux使用sem_init、sem_wait、sem_trywait、sem_post、sem_destroy windows使用C......
  • c++ 创建对象
    1.定义类一般写在.h文件中#include<string>#include<iostream>usingnamespacestd;voidprint(charcontent[]);voidTestString1();voidTestString2();voidTe......
  • C++ string类
    小引C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP(面向对象)的思想,而且底层空间......
  • [牛客BM70&LeetCode322]零钱兑换Ⅰ——DFS,记忆化搜索,动态规划(C++)
    题目描述给你一个整数数组arr,表示不同面额的硬币;以及一个整数aim,表示需要放入钱包的目标金额。计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组......
  • Vue.js 事件处理-事件修饰符
    视频<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"/> <title>事件修饰符</title> <!--引入Vue--> <scripttype="text/javascript"src="../js/vue.j......
  • 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 05.认识GameMode&自动生成AI角色
    斯坦福课程UE4C++ActionRoguelike游戏实例教程0.绪论概述本篇文章将会讲述UE中Gamemode的基本概念,并在C++中开发GameMode,为游戏设置一个简单的玩法:使用环境查询自动......
  • 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 04.角色感知组件PawnSensingComponent
    斯坦福课程UE4C++ActionRoguelike游戏实例教程0.绪论概述本文章对应课程第十一章43、44节。本文讲述PawnSensingComponent中的视觉感知的使用,以及对AI角色平滑转身......
  • C++学习记录
    C++recordnotebook基础导论C++特性具有c访问硬件的能力和面向对象程序的属性,以及更具有泛型编程的功能(使用模板进行编程)。OOP(面向对象编程)其中的方法有:自顶向下和......