int a = 10; const int& b = a; a = 20; std::cout << b << std::endl;//输出为20,表示虽然b用const修饰不能直接修改b但是可以通过修改b的引用a来修改b int a1 = 10; constexpr int& b1 = a1;//这样写会提示错误
c++11使用的constexpr更加强调常量,而之前的const更多是强调只读。因此遇到确定是常量的时候应该声明为constexpr。
比如使用函数传参时,int func(const int x)这里只是表示传入的x是只读的并不表示是一个常量,在该函数中使用x来声明数组长度会报错。如果使用在函数中再次使用const int a=x;此时的a可以作为数组长度。
constexpr int sqr1(int arg){//可用作数组长度 return arg*arg; } const int sqr2(int arg){//不可用作数组长度 return arg*arg; }
标签:const,int,constexpr,数组,arg,长度 From: https://www.cnblogs.com/hailanben/p/17360953.html