可能重复:
What is the meaning of a const at end of a member function?
我见过一些类似这样的课程。
void something() const;
const
的含义是什么?
答案 0 :(得分:5)
除了SRM所说的(该函数不能改变类的任何成员(这不完全正确,例如在mutable
成员的情况下,仍然可以改变)),这意味着你可以在const
的东西上调用这个成员函数。因此,如果您获得Foo const& foo
作为参数,则只能在问题中调用声明为const
的成员。
答案 1 :(得分:4)
这意味着something
可能无法修改类的成员变量。
规则的例外是如果使用mutable
关键字声明成员变量。
例如,假设您有一个std::map< int, int > var
成员变量和一个执行以下操作的方法:
int Class::method () const {
if (var.find (42) != var.end ()) {
return var[42];
}
return 0;
}
由于var[42]
修改了var
,如果42不在容器中,那将无法编译。将var
声明为mutable
可以让您通过编译。
答案 2 :(得分:3)
这意味着该函数不会修改任何成员变量。更确切地说,这意味着该函数不能改变该类的任何非静态或不可变成员变量
答案 3 :(得分:1)
绝对精确 - 它使函数中的隐式this
指针成为指向const
对象的指针。
从9.2.1“这个指针”“
this
的成员函数中class X
的类型为X*
。如果成员函数声明为const
,则其类型为const X*
,如果成员函数声明为volatile
,则其类型为volatile X*
,如果成员函数声明为const volatile
,其类型为const volatile X*
。
所有其他行为(您无法修改对象成员,可以使用const
对象调用该函数等)都不属于此。
答案 4 :(得分:0)
它声明此函数不能更改任何数据。使其成为只读功能。