为什么要在最后加上一个“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

上一篇: why put a "const" at the end?

下一篇: Const at the end of function declaration in C++