C++ 中函数声明末尾的 Const

Const at the end of function declaration in C++

本文关键字:Const 声明 函数 C++      更新时间:2023-10-16

可能的重复项:
"const"在C++方法声明中最后的含义?

在下面的函数声明中,

const char* c_str ( ) const;  

第二个常量是做什么的?

这意味着该方法是"const 方法" 对此类方法的调用不能更改实例的任何数据(mutable数据成员除外),并且只能调用其他 const 方法。

可以在 const 或非 const 实例上调用 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版本。