Const在C ++函数声明结束时

可能重复:
C ++方法声明中最后一个“const”的含义?

在下面的函数声明中,

const char* c_str ( ) const;  

第二个const做什么?


这意味着该方法是一个“常量方法”对这种方法的调用不能更改任何实例的数据(除了mutable数据成员)并且只能调用其他常量方法。

可以在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和non- const

链接地址: http://www.djcxy.com/p/40419.html

上一篇: Const at the end of function declaration in C++

下一篇: const type qualifier soon after the function name