为什么要在最后加上一个“const”?
可能重复:
c ++ const在类方法中使用
C ++方法声明中最后一个“const”的含义?
int operator==(const AAA &rhs) const;
这是一个运算符重载声明。 为什么把const
放在最后? 谢谢
const
关键字表示该方法不会更改该对象。 由于operator==
用于比较,因此不需要改变。 因此,它是const
。 对于像operator=
那样修改对象的方法,它必须被省略。
它可以让编译器仔细检查你的工作,以确保你没有做任何你不应该做的事情。 欲了解更多信息,请查看http://www.parashift.com/c++-faq-lite/const-correctness.html。
创建一个const
方法将让类的一个const
对象调用它。 因为此方法不能更改任何对象的成员(编译器错误)。
值得一提的是, 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 . . .
任何c ++声明结尾的“const”告诉编译器它不会改变它所属的东西。
链接地址: http://www.djcxy.com/p/40421.html