C++ 中函数声明末尾的 Const
Const at the end of function declaration in C++
可能的重复项:
"const"在C++方法声明中最后的含义?
在下面的函数声明中,
const char* c_str ( ) const;
第二个常量是做什么的?
这意味着该方法是"const 方法" 对此类方法的调用不能更改实例的任何数据(mutable
数据成员除外),并且只能调用其他 const 方法。
,但只能在非 const 实例上调用非 const 方法。
struct Foo {
void bar() const {}
void boo() {}
};
Foo f0;
f0.bar(); // OK
fo.boo(); // OK
const Foo f1;
f1.bar(); // OK
f1.boo(); // Error!
该
const
只能标记到成员函数上。它保证不会更改对象的任何数据成员。
例如,由于它,以下将是编译时错误:
struct MyClass
{
int data;
int getAndIncrement() const;
};
int MyClass::getAndIncrement() const
{
return data++; //data cannot be modified
}
它是影响该方法的修饰符(仅适用于方法)。这意味着它只会访问,但不会修改对象的状态(即,不会更改任何属性)。
另一个微妙的变化是此方法只能调用其他const
方法(让它调用可能会修改对象的方法是没有意义的)。有时,这意味着您需要某些方法的两个版本:const
和非const
版本。
相关文章:
- 为什么函数声明中允许 const?
- 在内存不足之前,我可以声明多少个 const 变量?
- 如何在声明为 const 的方法中更改类成员
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 可以使用<size_t>static_const(),std::as_const()或static_cast<const size_t>()来声明数组吗?
- 为什么必须将 const 添加到 constexpr 中才能进行字符串文字声明?
- 声明与 const 变量和成员函数相同的标识符
- 为什么我不能声明一个 constexpr 本地,而一个 const 一个工作?
- 类中的const声明
- 在类声明中初始化 const 成员变量时在调试模式下出现异常
- 为什么我们在这个函数声明中使用 const 和 & ?
- 不可变的全局对象应该声明为"const my_result_t BLAH"还是"extern const my_result_t BLAH;"?
- 为什么重载运算符>在参数声明 const 时不起作用?
- 如何在类中声明静态 const 结构元素
- 当我将 const int 声明/初始化为 5 时,它被初始化为一个大数字
- CPP主方法const声明
- 函数的Const声明
- 正在修改const声明对象上的可变对象的未定义行为
- 阅读复杂const声明的简单规则
- Const声明好奇