可能的重复:
这里使用const有什么用
?在类的函数中使用'const'
大家好,
我一直在使用const方法和变量来犯错误.例如,有时我使用修复问题
const int myfunc(const int &obj) const { }
Run Code Online (Sandbox Code Playgroud)
其他一些时候我觉得我最后不需要const,因为参数已经是const,所以我不明白为什么我应该通过在最后附加一个const来强制执行这个事实.
const int myfunc(const int &obj) const { }
const
表示返回值是常量.在这种特殊情况下,它并不是特别相关,因为它int
是一个值而不是参考.const
表示参数obj
是常量.这向调用者指示该函数不会修改该参数.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)