21xrx.com
2024-12-23 00:18:42 Monday
登录
文章检索 我的文章 写文章
C++中哪些类型的变量是不可变的?
2023-07-03 21:22:35 深夜i     --     --
C++ 类型 变量 不可变

C++是一种强类型语言,变量类型决定了变量在内存中占用的空间大小和变量能够存储的数据类型。在C++中,有些类型的变量是不可变的,也就是说它们在被赋值之后就不能再改变。

1. const 变量:const是C++中定义常量的关键字,它可以将一个变量定义为不可变的常量。一旦一个变量定义为const类型,它的值就不能被修改。例如:


const int a = 10;

a = 20; // 编译错误

2. reference 类型变量:C++中的引用是指一种与指针类似的类型,但是更加安全和方便。引用类型变量一旦被赋值,它就不能再改变。例如:


int x = 10;

int& y = x; // y是x的引用

y = 20; // x的值变成了20

在上述例子中,y是x的引用,它可以改变x的值,但是y本身的值是不能改变的。

3. constexpr 变量:C++11引入了constexpr关键字,用于指定在编译时计算的常量表达式。constexpr变量在编译时就已经确定,因此它们是不可变的。例如:


constexpr int factorial(int n) {

  return (n == 0) ? 1 : n * factorial(n-1);

}

constexpr int x = factorial(5); // x的值在编译时就确定了

x = 10; // 编译错误

在上述例子中,x是一个constexpr变量,它的值在编译时就计算出来了,因此它是不可变的。

除了上述三种类型的变量,C++中的其他类型都可以被改变。但是注意,const指针虽然指向的地址不能改变,但是所指向的值是可以改变的。例如:


const int* p = &x; // p是一个指向x的常量指针

*p = 20; // 编译错误

x = 20; // 可以改变x的值

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复