我有一本书,上面写着:
class Foo
{
public:
int Bar(int random_arg) const
{
// code
}
};
这是什么意思?
我有一本书,上面写着:
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++”中也有很好的一章。