C++ "const"关键字解释

标签 c++ constants

在阅读用 C++ 编写的教程和代码时,我经常会偶然发现 const 关键字。

我看到它是这样使用的:

const int x = 5;

我知道这意味着 x 是一个常量变量,可能存储在只读内存中。

但是什么是

void myfunc( const char x );

int myfunc( ) const;

?

最佳答案

void myfunc(const char x);

这意味着参数x是一个char,它的值不能在函数内部改变。例如:

void myfunc(const char x)
{
  char y = x;  // OK
  x = y;       // failure - x is `const`
}

最后一个:

int myfunc() const;

这是非法的,除非它在类声明中 - const 成员函数防止修改任何类成员 - const 非成员函数不能使用。在这种情况下,定义类似于:

int myclass::myfunc() const
{
  // do stuff that leaves members unchanged
}

如果你有特定的类成员需要在const成员函数中进行修改,你可以将它们声明为mutable。一个示例是成员 lock_guard,它使类的 const 和非 const 成员函数线程安全,但 必须在它自己的内部操作过程中发生变化。

关于C++ "const"关键字解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4064286/

相关文章:

c++ - hFind 返回 INVALID_HANDLE_VALUE

c++ - 代码使用 g++ 编译,但不使用 arm-none-eabi-g++

c++ - 非静态数据成员的无效使用

c - Vala - 常量而不是魔数(Magic Number)

c - C 中未确定的字符串或字符常量

c++ - 以参数作为派生类的绑定(bind)函数

c++ - 如果调用非虚拟实现,是否会通过 vtable 进行函数分派(dispatch)?

c++ - 我们可以将控制台和 win32 c++ 的命令和功能互换吗?

c - const char* 和 char* 转换(ADPCM 解码)

c++ - 返回指针 vector 的类中的 const 方法