在本文中,我们聚焦于 C++中至关重要的两个关键字:const
和constexpr
。深入剖析了它们的特性与区别,const
在限制变量修改方面发挥关键作用,提升程序的稳定性和可维护性。而constexpr
则在编译时求值的场景中表现出色,为程序的性能优化带来新的可能。通过实际代码示例和详细的解释,帮助读者透彻理解这两个关键字,以便在 C++编程中更加得心应手地运用。
1. const
1.1. 修饰一般常量
一般常量是指简单类型的常量。这种常量在定义时,修饰符const可以用在类型说明符前,也可以用在类型说明符后。 例如:
int const x = 2;
const int y = 2;
const std::string& name = "csdn";
1.2. 修饰常数组
定义或说明一个常数组
int const a[5] = {1, 2, 3, 4, 5};
const int a[5] = {1, 2, 3, 4, 5};
1.3. 修饰常指针
const int *A; //const修饰指向的对象,A可变,A指向的对象不可变
int const *A; //const修饰指向的对象,A可变,A指向的对象不可变
int *const A; //const修饰指针A, A不可变,A指向的对象可变
const int *const A;//指针A和A指向的对象都不可变
1.4. 修饰函数的返回值
const修饰符也可以修饰函数的返回值,是返回值不可被改变
const int Fun1();
const MyClass Fun2();
1.5. 修饰类的成员函数
const修饰符也可以修饰类的成员函数
class ClassName {
public:
int Fun() const;
};
这样,在调用函数Fun时就不能修改类里面的数据
2. constexpr
修饰的函数只能包括return 语句。
修饰的函数只能引用全局不变常量。
修饰的函数只能调用其他constexpr修饰的函数。
函数不能为void 类型和,并且prefix operation(v++)不允许出现。