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 指针赋值

猜你喜欢

转载自blog.csdn.net/baidu_39514357/article/details/129586976