"const"在函数定义的末尾是什么意思(在上下文中)?

Mat*_*bar 21 c++

可能重复:
成员函数结束时const的含义是什么?

如果我的类定义如下:

type CLASS::FUNCTION(int, const char*) const
Run Code Online (Sandbox Code Playgroud)

结束括号后的最后一个const是什么意思,以及如何将它应用于函数:

type CLASS::FUNCTION(int var1, const char* var2) {

}
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 30

这意味着此函数不会修改对象的可观察状态.

在编译器术语中,它意味着您不能在const对象(或const引用或const指针)上调用函数,除非该函数也被声明为const.此外,声明const的方法不允许调用不是的方法.

更新:正如Aasmund完全正确添加的那样,const允许方法更改声明为的成员的值mutable.

例如,有一个只读操作(例如int CalculateSomeValue() const)缓存其结果可能是有意义的,因为它的调用成本很高.在这种情况下,您需要有一个mutable成员来写入缓存的结果.

我为遗漏道歉,我试图快速而且重点突出.:)

  • +1"不修改可观察状态"的表述.只是详细说明:标记为`mutable` _may_的任何成员仍然可以被`const`函数修改.出于这个原因,"可变"只应该用于内部簿记,这对外界来说是"不可见的". (3认同)

Mah*_*esh 5

const函数末尾的 意味着它不会修改调用它的对象的状态(即this)。

type CLASS::FUNCTION(int, const char*) const ; // Method Signature

type CLASS::FUNCTION(int var1, const char* var2) const {

}
Run Code Online (Sandbox Code Playgroud)

const您还需要在方法定义末尾提及关键字。const另请注意,只有成员函数的末尾才能包含此非修饰符关键字。