C++——限定符const

本文详细介绍了C++中的const限定符,包括const的定义、const与#define的区别、const修饰变量、引用、指针、函数参数和返回值,以及const在类中的应用。讨论了const如何帮助编译器进行类型检查,提高代码安全性和效率。
摘要由CSDN通过智能技术生成

写在前面

这一篇博客总结一下我对于C++中const限定符的理解。由于我学习年限不长,所以不能添加很多自己实际经验的理解,所以这篇博客主要是自己查阅网上的一些资料,对资料进行整合、分类、理解,然后整理的一篇博客。一方面能帮助自己更好的理解这个灵活的限定符,另一方面提供一些自己的简单的理解。还望多多批评指正。

参考文献:

const限定符定义

《C++ Primer》中是这样定义的:“有时我们希望定义这样一种变量,它的值不能被改变”,“另一方面,也应随时警惕防止程序一不小心改变了这个值。为了满足这一要求,可以使用关键字const对变量的类型加以限定”。所以可以看出const限定符的作用是:

  • 告诉编译器与外部引用者,const限定符修饰的变量或者对象的值,不能改变。

const与define

仅仅考虑对于变量,要想让变量的值不改变,可以使用const,也可以使用define宏定义。如代码如下:

#define MAX 10000
//OR
const int MAX=10000;

那么,看上去二者实现功能一样,都是让MAX的值一直为10000,有何区别呢?

如果使用#define,那么如果出现错误,编译器并不会提示MAX,因为在预处理阶段已经把MAX替换成了10000,因此编译器会莫名其妙的提示10000这个数字出现了错误,从而不利于程序debug,但是如果使用const int MAX=10000,程序后面尝试修改MAX变量,编译器就会准确的提示MAX有错误,从而可以轻易地定位。

const修饰变量

const修饰变量,以下两种定义形式在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。

const TYPE ValueName = value;
TYPE cosnt ValueName = value;

注意: 因为const对象一旦创建后其值就不能再改变,所以const对象必须初始化。

注意: 默认状态下,const对象仅在文件内有效。当以编译时初始化的方式定义一个const对象时,编译器将在编译过程中把用到该变量的地方都替换成对应的值。所谓如果程序包含多个文件,而且多个外部文件(非const定义文件)有用到const变量,即在多个文件之间共享const对象,必须在变量的定义之前添加extern关键字。

//file_1.cc定义并初始化了一个常量,该常量能被其他文件访问
extern const int bufSize = fcn();
//file_1.h头文件
extern const int bufSize;

const修饰引用

可以把引用绑定到const对象上,const对象与其他对象一样,这称为对常量的引用。代码示例如下:

const int c1 = 1024;
const int &r1 = c1;

引用的类型必须与其所引用对象的类型一致。但是这里有例外:可以运行常量引用绑定非常量的对象、字面值,一般表达式,实例代码如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值