C++ const &类型和不加const有什么区别
时间: 2024-10-28 17:11:53 浏览: 7
C++ 中 const和static readonly区别
在C++中,`const`关键字用于修饰指针或引用,可以分为`const T*`、`T* const`以及`const T&`等几种形式。`const T&`类型的变量表示一个常引用,它是指向某个已存在的`T`对象的引用,并且引用自身是不可更改的,即不能修改引用所指向的对象。
当你看到`const T&`时,这意味着:
1. 引用不会改变它所引用的对象,即不能通过这个引用重新赋值或改变引用的内容。
2. 对象本身可以被修改,但如果`T`是值类型(如基本数据类型或复杂类型),引用只是一个别名,对引用本身的修改不会影响原始对象。
相比之下,如果你省略了`const`,得到的是`T&`,这样的引用是可以修改它所引用的对象的。例如:
```cpp
int x = 5;
const int& cref = x; // cref是一个常量引用,不能改变x的值
int& ref = x; // ref是一个普通引用,可以直接修改x的值
ref = 10; // 修改引用所指向的值,x现在变成10
cref = 7; // 这会报错,因为常量引用不允许修改x
```
总结一下,`const T&`提供了一种安全的方式来访问已知不变的对象,而`T&`则允许直接修改引用所指向的对象。
阅读全文