可能重复:
What does const mean following a function/method signature?
我在C ++(特别是Boost)的后期阅读中遇到了很多函数,这些函数有一个我以前从未见过的符号。例如:
virtual void B() const;
你可以看到我们在函数名后面有一个const!我已经看到const关键字主要是关于它们在函数中使用的函数返回值(或作为参数),但是这个是不同的。 任何人都可以向我解释它是什么以及为什么我们使用它?还有什么不同于常规使用const函数?
int * const Function(int *const constantPointerToAnInteger, char const* pointerToAConstantChar);
答案 0 :(得分:15)
当你有一个const对象时,只能调用标记为const的成员函数。例如
struct Silly {
void say_hi();
void say_bye() const;
};
// ...
Silly const s;
s.say_hi(); // illegal
s.say_bye(); // legal
此外,const成员函数也不能修改对象的任何成员变量(除非成员变量被声明为可变的。)例如。
struct Silly {
int x;
mutable int y;
void do_stuff() const { x = 0; } // illegal - labelled const
void do_other_stuff() const { y = 0; } // fine - y is mutable
};
答案 1 :(得分:5)
这是一个承诺(强制执行),该功能不会改变该类的任何成员。没有它,你只能为非const
对象调用它。
答案 2 :(得分:3)
它禁止该方法更改类成员变量。
一个好的规则是将一个方法声明为const,当它应该是const(es.getters)时,至少有两个原因:
无论如何,方法的常量可以通过两种方式绕过: