我有一本书,上面写着:

class Foo 
{
public:
    int Bar(int random_arg) const
    {
        // code
    }
};

这是什么意思?


当前回答

函数不能通过你给它的指针/引用改变它的形参。

每当我需要思考这个问题时,我就会翻到这一页:

http://www.parashift.com/c++-faq-lite/const-correctness.html

我相信在Meyers的“更有效的c++”中也有很好的一章。

其他回答

考虑两个类类型变量:

class Boo { ... };

Boo b0;       // mutable object
const Boo b1; // non-mutable object

现在你可以在b0上调用Boo的任何成员函数,但只能在b1上调用const限定的成员函数。

我总是觉得在概念上更容易认为你正在使this指针const(这几乎是它所做的)。

Bar保证不会更改正在对其调用的对象。例如,请参阅c++常见问题解答中有关const正确性的部分。

和这个问题类似。

本质上,这意味着Bar方法不会修改Foo的不可变成员变量。

函数不能通过你给它的指针/引用改变它的形参。

每当我需要思考这个问题时,我就会翻到这一页:

http://www.parashift.com/c++-faq-lite/const-correctness.html

我相信在Meyers的“更有效的c++”中也有很好的一章。