广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中的const限定符的使用和作用
  • 485
分享到

C++中的const限定符的使用和作用

C++const限定符C++constC++限定符 2023-05-19 08:05:37 485人浏览 八月长安
摘要

目录1、const 的引用2、指针和const3、顶层const4、constexpr和常量表达式const满足定义一种变量在被设置初始值后它的值不能再次被改变。 在默认状态下,co

const满足定义一种变量在被设置初始值后它的值不能再次被改变。

在默认状态下,const对象仅在文件内有效。

如果需要在不同文件下共享需要添加关键字extern,这样只需要定义一次就够了。

extern const int bufSize;

1、const 的引用

把引用绑定到const上,和其他对象使用一样,最大的区别在于对常量的引用不能被用作他所修改的绑定对象:

const int ci=1024;
const int &rl=ci;//正确:引用及其对应的对象都是常量
rl=42;//错误:rl是对常量的引用
int &r2=ci;//错误:试图让一个非常量引用指向一个常量对象

ci不允许赋值,当然也不可能通过引用去改变ci;

初始化和对const的引用

引用类型必须与其所引用对象的类型一直,但是有两个例外:

1)一个是初始化常量引用时允许任意表达式作为初始值,只要该表达式的结果能转化成引用的类型即可。

int i=42;
const int &rl=i;//正确:允许将const int&绑定到一个普通int对象上
const int &r2=42;//正确:r2是一个常量引用
const int &r3=rl*2;//正确:r3是一个常量引用
int &r4=rl*2;//错误:r4是一个普通非常量引用

对const的引用可能引用一个并非const对象

int i=42;
int &rl=i;//引用r1绑定到一个i对象上
const int &r2=i;//r2也绑定对象i,但不允许通过r2修改i值
r1=0;//r1并非常量,i的值修改为0
r2=0;//错误:r2是一个常量引用

2、指针和const

  • 与引用一样,也可以令指针指向常量或非常量。
  • 类似与常量引用,指向常量的指针不能用于改变其所指对象的值。
  • 和常量引用一样,指向常量的指针也没有规定其所指的对象必须是一个常量。

所以,要想存放常量对象的地址,只能使用指向常量的指针:

const double pi=3.14;// pi是个常量,它的值不能改变
double *ptr=π//错误:ptr是一个普通指针
const double *cptr=π//正确:cptr可以指向一个双精度常量
*cptr=42;//错误:不能给*cptr 赋值

指针的类型必须与其所指对象类型一致,但是有两个例外:

1、允许令一个指向常量的指针指向一个非常量对象;

double dval=3.14;
cptr=&dval;//正确:但是不能通过cptr改变dval的值

const 指针

常量指针必须初始化,而且一旦初始化完成,则它的值(也就是存放在指针中的那个地址)就不能在改变了。

指针是一个常量时,可以通过指针修改其所指对象的值,这样做完全依赖于所指对象类型。

*pip=2.72;//错误:pip是一个指向常量的指针
if(*curErr)//如果curErr所指的对象的值不为0
{
	errorHandler();
	*curErr=0; //正确:把curErr所指的对象的值重置
}

3、顶层const

  • 顶层 const (top-level const) 表示指针本身是个常量;
  • 底层 const (low-level const) 表示指针所指的对象是一个常量;

4、constexpr和常量表达式

  • 常量表达式:是指值不会改变并且在编译过程就能得到计算结果的表达式。显然,字面值是常量表达式,用常量表达式初始化的const对象也是常量表达式。
  • constexpr 变量 :在c++11 新标准规定,允许将变量声明为 constexpr 类型以便编译器来验证变量的值是否是一个常量表达式。
  • 字面值类型:指简单易见的数据类型,比如:算术类型、引用和指针等。
  • 指针和 constexpr :必须申明,在constexpr声明中定义了一个指针,限定符constexpr仅对指针有效,对指针所指的对象无关:
const int *p=nullptr;//p是一个指向整型常量的指针
constexpr int *q=nullptr;//q是一个指向整数的常量指针

与其他常量指针类似,constexpr 指针既可以指向常量也可以指向一个非常量。

到此这篇关于C++中的const限定符的使用和作用的文章就介绍到这了,更多相关C++ const限定符内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++中的const限定符的使用和作用

本文链接: https://www.lsjlt.com/news/212796.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中的const限定符的使用和作用
    目录1、const 的引用2、指针和const3、顶层const4、constexpr和常量表达式const满足定义一种变量在被设置初始值后它的值不能再次被改变。 在默认状态下,co...
    99+
    2023-05-19
    C++ const限定符 C++ const C++限定符
  • C++的const限定符怎么使用
    本篇内容介绍了“C++的const限定符怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!const限定符:把变量定义成一个常量1.使用...
    99+
    2023-06-22
  • C++ const限定符以及顶层const和底层const的案例详解
    目录一、const限定符的作用二、const和引用三、const和指针四、顶层const和底层const1、顶层const2、底层const一、const限定符的作用   当我们在写...
    99+
    2022-11-12
  • C++引用的使用与const修饰符
    目录1、引用2、函数引用传递3、引用与const4、const修饰符的优点1、引用 引用是给已经定义的变量一个别名,可以简单理解成同一个变量的昵称。既然是昵称或者是别名,显然它和原本...
    99+
    2022-11-12
  • C++11的const, const expression和constexpr有什么作用
    这篇文章主要讲解了“C++11的const, const expression和constexpr有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++11的const, const...
    99+
    2023-06-19
  • C++中const修饰符的详解及其作用介绍
    目录概述常对象常对象成员常成员函数常数据成员数据成员访问限制常对象修改的限制常指针指向常变量的指针指向对象的指针小结对象的常引用总结概述 const 是 constant 的缩写, ...
    99+
    2022-11-12
  • C/C++编程中const的使用详解
    目录1 概述:const和define的区别2. 修饰局部变量3. 常量指针与指针常量4. 修饰函数的参数5. 修饰函数的返回值6. 修饰全局变量总结1 概述:const和defin...
    99+
    2022-11-13
  • linq中的限定操作符怎么用
    本篇内容介绍了“linq中的限定操作符怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!限定操作符运算返回一个Boolean值,该值指示序...
    99+
    2023-06-29
  • C++11中的引用限定符示例代码
    目录1. C++11:引用限定符2. const和引用限定符C++中有左值和右值的概念。其实,左值和右值的区分也同样适用于类对象,本文中将左值的类对象称为左值对象,将右值的类对象称为...
    99+
    2023-01-03
    C++11 引用限定符 C++ 引用限定符 C++11 限定符
  • linq中的限定操作符
    限定操作符运算返回一个Boolean值,该值指示序列中是否有一些元素满足条件或者是否所有元素都满足条件。 一、All操作符 All方法用来确定是否序列中的所有元素都满足条件。看下面的...
    99+
    2022-11-13
  • C++中的const怎么用
    本文小编为大家详细介绍“C++中的const怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++中的const怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。const 是 constant 的缩写,...
    99+
    2023-06-27
  • C++中const的简单用法
    C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应...
    99+
    2023-06-03
  • C语言中的const在怎么使用
    这篇文章主要介绍了C语言中的const在怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中的const在怎么使用文章都会有所收获,下面我们一起来看看吧。const可以说一种常量的声明的关键字,如co...
    99+
    2023-06-16
  • C++成员函数中const的使用详解
    目录修饰入参值传递址传递const修饰入参修饰返回值修饰函数总结const 在C++中是一个很重要的关键字,其不光可以用来修饰变量,还可以放在函数定义中,这里整理了其在函数中的三个用...
    99+
    2022-11-13
  • C语言与C++中const的用法对比
    目录一、C语言中的const二、C++中的const三、进一步比较C和C++中的const四、const与宏的区别五、小结一、C语言中的const const修饰的变量是只读的,本质...
    99+
    2022-11-13
  • C语言中const,指针和引用的关系
    目录const 与指针const 与引用const 与指针、引用总结const 与指针 我们写一段代码来探究以下 int a = 10, b = 20; int* p1 = &...
    99+
    2022-11-12
  • C#中is和as操作符的用法
    本篇内容介绍了“C#中is和as操作符的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!c# 中 is和as 操作符是用来进行强制类型转换...
    99+
    2023-06-17
  • C#中const,readonly和static关键字的用法介绍
    如果有一个值不太会变化,我们经常使用const和readonly,这2者有何不同呢?有时候,我们也会在readonly之前加上关键字static,这又意味着什么呢? const co...
    99+
    2022-11-13
  • VBS正则表达式限定符的描述和使用
    这篇文章主要讲解了“VBS正则表达式限定符的描述和使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“VBS正则表达式限定符的描述和使用”吧!限定符有时候不知道要匹配多少字符。为了能适应这种不...
    99+
    2023-06-09
  • C# 中使用隐式和显式操作符的示例
    目录什么是显式,什么是隐式创建 DTO 类Model 和 DTO 之间的相互转换使用隐式操作符使用显式操作符C# 有一个鲜为人知的特性是通过定义 显式和隐式操作符 实现类型之间的转换...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作