深入理解C++中的const与constexpr

        导读:C++11引入了constexpr对const的补充,因此凡是表示“只读”建议用const,凡是表示“常量表达式”建议使用constexpr。

目录

 一、关于const

1、const的功能

2、辨别“只读”与“常量表达式”

二、关于constexpr

1、从本质了解constexpr

2、constexpr修饰函数


 一、关于const

1、const的功能

        在 C++11 之前只有 const 关键字,从功能上来说这个关键字有双重语义:变量只读与常量表达式,举一个简单的例子: 

void func(const int num)
{
	const int count = 24;
	int array[num];            // error,num是一个只读变量,不是常量
	int array1[count];         // ok,count是一个常量

	int a1 = 520;
	int a2 = 250;
	const int& b = a1;
	b = a2;                         // error
	a1 = 1314;
	cout << "b: " << b << endl;     // 输出结果为1314
}

        当 const 修饰的变量是只读变量时,仅仅是说明不能通过这个只读变量修改内存的值,但是可以通过其他方法修改内存值。 如下:

void func1(const int num)
{
	int a = 10;
	const int& con_b = a;
	cout << con_b << endl;//输出为10
	a = 20;
	cout << con_b << endl;//输出20,改变了con_b的值大小
}

 2、辨别“只读”与“常量表达式”

        看了前面的关于 const 的内容,不知道是不是有疑问,const 什么时候为只读变量,什么时候是常量?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值