C/C++的const修饰符用法总结
已经玩了C++三年的菜鸟一枚,因此本文部分内容可能有误,请见谅。
作用:只读,不能修改。
规则:const 默认作用于其左边的东西,否则作用于其右边的东西。从右往左即可读懂。
const applies to the thing left of it. If there is nothing on the left then it applies to the thing right of it.
变量声明:
名字 | 声明 | 解释 | 含义 |
---|---|---|---|
常量整型 | const int a |
const 修饰 int 为常量整型 | 不能修改值,必须初始化 |
常量整型 | int const a |
const 修饰 int 为常量整型 | 不能修改值,必须初始化 |
指向常量整型的变量指针 | const int *a |
const 修饰 int 为常量整型,* 作用于常量整型 | 指针可修改,内容不可修改 |
指向常量整型的变量指针 | int const *a |
const 修饰 int 为常量整型,* 作用于常量整型 | 指针可修改,内容不可修改 |
指向变量整型的常量指针 | int* const a |
const 修饰 * 为常量指针,int 说明是变量整型 | 指针不可修改,内容可修改 |
指向常量整型的常量指针 | const int* const a |
左边的 const 修饰 int 为常量整型,右边的 const 修饰 * 为常量指针 | 指针不可修改,内容不可修改 |
指向常量整型的常量指针 | int const* const a |
左边的 const 修饰 int 为常量整型,右边的 const 修饰 * 为常量指针 | 指针不可修改,内容不可修改 |
指向常量整型的常量指针 | const int* a const |
左边的 const 修饰 int 为常量整型,右边的 const 修饰 * 为常量指针 | 指针不可修改,内容不可修改 |
变量指针指向一个指向常量整型的常量指针 | int const * const *a |
左边的 const 修饰 int 为常量整型,右边的 const 修饰 * 为常量指针,右边的 * 作用于变量,表示这是一个变量指针 | 指针可修改,指针的指针不可修改,指针的指针内容不可修改 |
常量指针指向一个指向常量整型的常量指针 | int const * const * const a |
左边的 const 修饰 int 为常量整型,中间和右边的 const 修饰 * 为常量指针 | 指针不可修改,指针的指针不可修改,指针的指针内容不可修改 |
常量引用 | const int &a |
const 修饰 int 为常量整型 | 不能通过常量引用去修改其引用的值,必须初始化 |
常量引用 | int const &a |
const 修饰 int 为常量整型 | 不能通过常量引用去修改其引用的值,必须初始化 |
引用常量 | int &const a |
不存在 | 不存在 |
常量对象 | const MyClass a |
const 修饰 MyClass 为常量对象 | 不能修改成员变量的值,只能调用常量成员函数 |
函数声明:
名字 | 声明 | 含义 |
---|---|---|
常量作为函数参数 | void MyFun (const int a) |
函数内部不允许修改常量的值 |
常量引用作为函数参数 | void MyFun (const int &a) |
函数内部不允许修改常量的值 |
常量成员函数 | void MyFun () const |
常量成员函数内部不允许修改成员变量,也不允许调用非常量成员函数 |
返回常量值的函数 | const int MyFun () |
防止函数返回值作为左值,且作为右值只能为 const int 类型赋值 |
返回常量引用的函数 | const int& MyFun () |
防止函数返回值作为左值,且不会调用复制构造函数 |
返回常量指针的函数 | const int* MyFun () |
防止函数返回值作为左值,且作为右值只能为 const int 指针赋值 |
返回指向常量整型的常量指针的函数 | const int* const MyFun () |
防止函数返回值作为左值,且作为右值能为 const int* const 和 const int 指针赋值 |