C++ 中 const 的用法

C++ 函数 - const 的用法·

https://www.cnblogs.com/xudong-bupt/p/3509567.html

https://www.runoob.com/w3cnote/cpp-const-keyword.html

描述·

const 是 constant 的缩写,本意是不变的,不易改变的意思。在 C++ 中是用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。

const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。

例如:

1
2
3
const int  a = 7; 
int b = a; // 正确
a = 8; // 错误,不能改变

a 被定义为一个常量,并且可以将 a 赋值给 b,但是不能给 a 再次赋值。对一个常量赋值是违法的事情,因为 a 被编译器认为是一个常量,其值不允许修改。


const 修饰指针变量有以下三种情况。

  • 1: const 修饰指针指向的内容,则内容为不可变量。
  • 2: const 修饰指针,则指针为不可变量。
  • 3: const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量。
  1. 只有一个const,如果const位于 * 左侧,表示指针所指数据是常量,不能通过解引用修改该数据;指针本身是变量,可以指向其他的内存单元。
  2. 只有一个const,如果const位于 * 右侧,表示指针本身是常量,不能指向其他内存地址;指针所指的数据可以通过解引用修改。
  3. 两个const, * 左右各一个,表示指针和指针所指数据都不能修改。

用法·

1
2
3
4
5
6
7
int a1=3;   ///non-const data 数据不是常量,是变量a1
const int a2=a1; ///const data 数据是常量
int * a3 = &a1; ///non-const data,non-const pointer 数据不是常量,指针不是常量
const int * a4 = &a1; ///const data,non-const pointer 数据是常量,指针不是常量
int * const a5 = &a1; ///non-const data,const pointer 数据不是常量,指针是常量
int const * const a6 = &a1; ///const data,const pointer 数据是常量,指针是常量
const int * const a7 = &a1; ///const data,const pointer 数据是常量,指针是常量

返回值·

返回一个常量。