c ++ const在类方法中使用

Bob*_*Bob 0 c++ const

可能的重复:
这里使用const有什么用
?在类的函数中使用'const'

大家好,
我一直在使用const方法和变量来犯错误.例如,有时我使用修复问题

const int myfunc(const int &obj) const { }
Run Code Online (Sandbox Code Playgroud)

其他一些时候我觉得我最后不需要const,因为参数已经是const,所以我不明白为什么我应该通过在最后附加一个const来强制执行这个事实.

Mat*_*vis 5

const int myfunc(const int &obj) const { }

  1. 第一个const表示返回值是常量.在这种特殊情况下,它并不是特别相关,因为它int是一个值而不是参考.
  2. 第二个const表示参数obj是常量.这向调用者指示该函数不会修改该参数.
  3. 第三个const表示函数myfunc是常量.这向调用者指示该函数不会修改该函数所属的类的非可变成员变量.

关于#3,请考虑以下事项:

class MyClass
{
    void Func1()       { ... }  // non-const member function
    void Func2() const { ... }  //     const member function
};

MyClass c1;        // non-const object
const MyClass c2;  //     const object

c1.Func1();  // fine...non-const function on non-const object
c1.Func2();  // fine...    const function on non-const object
c2.Func1();  // oops...non-const function on     const object (compiler error)
c2.Func2();  // fine...    const function on     const object
Run Code Online (Sandbox Code Playgroud)