函数原型中的const参数

这个问题在这里已经有了答案:

  • C ++方法声明中最后一个“const”的含义? 7个答案

  • 这是一个const方法,这意味着你可以调用它const对象,也不会改变非mutable成员,也不会调用其他非const方法。

    struct X
    {
        void foo();
        int x;
        void goo() const;
    };
    
    void X::goo() const
    {
       x = 3;  //illegal
       foo();  //illegal
    }
    
    //...
    const X x;
    x.foo();   //illegal
    x.goo();   //OKAY
    

    基本上,这意味着该方法不会修改该类的实例的状态。 这意味着它也不会调用会改变类实例状态的其他成员。

    好:

    class Foo
    {
       int m_foo;
       int GetFoo() const
       {
           return m_foo;
       }
    }
    

    编译错误:

    class Foo
    {
       int m_foo;
       int GetFoo() const
       {
           m_foo += 1;
           return m_foo;
       }
    }
    

    有更深入的考虑因素,如通过参考传递时的性能优势 - 如果您想深入研究,搜索的术语是“常量正确性”。


    这一行中的const意味着它是一个常量函数。 这意味着它不能修改它里面的对象。

    因此,如果你声明了一个成员函数const ,你可以告诉编译器该函数可以被调用给一个const对象。 没有明确声明为const成员函数被视为将修改对象中的数据成员的成员函数,编译器将不允许您为const对象调用它。

    链接地址: http://www.djcxy.com/p/40423.html

    上一篇: const parameter in function prototype

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