你用const能做到什么程度?你只是在必要的时候才把函数变成const,还是从头到尾到处都用它?例如,想象一个简单的变异子,它接受一个布尔参数:
void SetValue(const bool b) { my_val_ = b; }
这个const真的有用吗?就我个人而言,我选择广泛地使用它,包括参数,但在这种情况下,我想知道它是否值得?
我还惊讶地发现,你可以在函数声明中的形参中省略const,但可以在函数定义中包含它,例如:
. h文件
void func(int n, long l);
. cpp文件
void func(const int n, const long l)
这有什么原因吗?这对我来说有点不寻常。
当参数按值传递时,Const是没有意义的,因为你不会修改调用者的对象。
通过引用传递时应优先使用Const,除非函数的目的是修改传递的值。
最后,不修改当前对象(this)的函数可以,也可能应该声明为const。下面是一个例子:
int SomeClass::GetValue() const {return m_internalValue;}
这是一个不修改应用此调用的对象的承诺。换句话说,你可以调用:
const SomeClass* pSomeClass;
pSomeClass->GetValue();
如果函数不是const,则会导致编译器警告。
当参数按值传递时,Const是没有意义的,因为你不会修改调用者的对象。
通过引用传递时应优先使用Const,除非函数的目的是修改传递的值。
最后,不修改当前对象(this)的函数可以,也可能应该声明为const。下面是一个例子:
int SomeClass::GetValue() const {return m_internalValue;}
这是一个不修改应用此调用的对象的承诺。换句话说,你可以调用:
const SomeClass* pSomeClass;
pSomeClass->GetValue();
如果函数不是const,则会导致编译器警告。