c++ - "Const"在 C++ 中还做了什么,然后告诉编译器特定的东西是只读的

标签 c++ pointers constants

好吧,我没有意识到 const 可能和指针一样令人困惑。有人可以按步骤解释以下代码在 const 方面究竟做了什么吗?

const int*const Method3(const int*const&)const;

即使对于非新手程序员来说也是如此令人困惑。

最佳答案

这可能会造成混淆,因为它将两种风格的 const 混合在一起。

const int*const Method3(const int*const&)const;

我将对它们重新排序,因为在我看来,理解它们的最佳方式是倒着读。

让我们从返回类型开始:

const int*const -> int const* const

通过向后读取它,我们得到:const 指向 const int 的指针。

同理,对于函数参数:

const int* const& -> int const* const&

通过向后阅读,我们得到:对 const 的引用指向 const int

该函数也被标记为 const,这意味着它是一个成员函数,例如,当对该类的引用为常量时可以调用它。

对于可能的 const 优化和进一步理解,请参阅以下答案:

关于c++ - "Const"在 C++ 中还做了什么,然后告诉编译器特定的东西是只读的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44247062/

相关文章:

c++ - 指向结构的动态指针数组在成员变量赋值时抛出 SIGSEGV

java - JAVA中如何根据环境动态选择配置?

ruby - 常量与实例变量与实例方法

ios - 批量定义常量有什么更聪明的方法吗?

c++ - 递归最小堆错误?

c++ - 将 std::string 缓冲区转换为整数

c 将函数指针赋值给变量

c - while(fgets) 之后的 memset()

c++ - 如何将A16B16G16R16F转换为ARGB32?

c++ - C++0x 是否支持 std::wstring 与 UTF-8 字节序列的转换?