C++ const关键字使用

const定义常量

在c语言中,我们学习过可以使用#define来定义常量。但是#define的原理是简单的替换,因此对于#define来说没有类型检查这回事。

c++中提供了const关键字,用const关键字修饰的变量其值是不能修改的,因此可以使用const关键字来替换#define,这有益于编译器进行类型检查。

const关键字定义变量如下代码所示:

#include<iostream>
using namespace std;
const int MAX = 1000;
const double PI = 3.14;
const char NAME[] = "yurui";
int main() {
	MAX = PI;//报错
	int a = PI;//警告
	return 0;
}

如上程序所示,使用const关键字定义了MAXPINAME三个全局变量。

通过MAX = PI;对const修饰的变量进行赋值时会报错;通过int a = PI;进行赋值时编译系统会给出警告,提示类型不符合。

通过上面的例子,我们可以看出,通过使用const关键字修饰常量,在使用时编译系统会进行类型检查。

const定义常量指针

通过const关键字定义常量指针,这样就不能通过指针修改变量的值。

例如:

#include<iostream>
using namespace std;
int main() {
	int a = 10;
	const int* p = &a;
	*p = 10;//报错
    a = 100;//正确
	return 0;
}

如上面的程序,定义常指针p,当我们通过p去修改其所指向的值时,编译器就会对其报错。

但通过变量名还是可以修改其值,如a = 100;

另外,观察下面代码:

#include<iostream>
using namespace std;
int main() {
	const int* a;
	int* b;
	a = b;//正确
	b = a;//错误
	return 0;
}

对于常指针,我们可以直接对其赋值,如a = b;;对于非常量指针,我们不能使用常量指针对其进行赋值,如b = a;

const修饰引用对象

引用也可以用const关键字修饰,这样就不能通过引用名来修改变量值了。

如下代码所示:

#include<iostream>
using namespace std;
int main() {
	int a = 10;
	const int& r = a;
    a = 10;//正常
	r = 10;//报错
}

在执行到r=10;这条语句时编译器会报错,提示表达式必须是可修改的左值,因为我们再初始化引用时将其加上了了const关键字,我们就不能通过引用名来修改变量的值了。

对于a = 10;这条语句则执行正常,因为a没有const关键字修饰。

再考量下面的代码:

#include<iostream>
using namespace std;
int main() {
	const int a = 10;
	const int& b = a;//正确
	int& r = a;//错误
	r = 100;//错误
	a = 100;//错误
	return 0;
}

对于用const关键字修饰的变量,我们在为其创建引用对象时,任然需要创建const类型的引用对象,且无法通过变量名或引用名来修改变量的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值