可能重复:
c++ const use in class methods
Meaning of “const” last in a C++ method declaration?
int operator==(const AAA &rhs) const;
这是一个运算符重载声明。为什么要将const
放在最后?感谢
答案 0 :(得分:7)
const
关键字表示该方法不会更改对象。由于operator==
用于比较,因此无需更改任何内容。因此,它是const
。对于像operator=
这样修改对象的方法,必须省略它。
它让编译器仔细检查你的工作,以确保你没有做任何你不应该做的事情。有关详细信息,请查看http://www.parashift.com/c++-faq-lite/const-correctness.html。
答案 1 :(得分:3)
创建方法const
将让类的一个常量对象调用它。因为此方法无法更改任何对象的成员(编译器错误)。
值得一提的是const
是方法签名的一部分,因此在同一个类中,您可能有两个相同原型的方法,但一个是const而另一个不是。在这种情况下,如果从变量对象调用重载方法,则调用非const方法,如果从常量对象调用它,则调用const
方法。
但是,如果你只有一个const
方法(它没有非常量的重载),那么它就是从变量和常量对象中调用的。
例如:
#include <iostream>
using std::cout;
class Foo
{
public:
bool Happy;
Foo(): Happy(false)
{
// nothing
}
void Method() const
{
// nothing
}
void Method()
{
Happy = true;
}
};
int main()
{
Foo A;
const Foo B;
A.Method();
cout << A.Happy << '\n';
B.Method();
cout << B.Happy << '\n';
return 0;
}
将输出:
1
0
Press any key to continue . . .
答案 2 :(得分:1)
任何c ++声明结尾处的“const”告诉编译器它不会改变它所属的东西。
答案 3 :(得分:1)
这标志着方法本身是常量,这意味着只要有对相关对象的 const 引用,编译器就允许您使用该方法。如果你有一个const引用,否则你只能调用也被声明为const的方法。
答案 4 :(得分:1)
方法声明末尾的'const'标记该方法可以安全地调用常量对象。