const和constexpr

发布时间 2023-04-28 09:29:54作者: 海蓝笨
    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;
}