const的使用
-
最近看到了一点OF关于 函数声明的代码 ,对于const的使用存在疑惑:
inline scalar k() const { return k_; } inline const vectorField& Smom() const { return Smom_; }
为什么第一行代码应用了一个const,第二行代码用了两个const呢?
第二行代码中的两个const分别表示什么意思呢?
麻烦老师们能够指点一下
-
-
对应两个问题的回答。
- 第二行代码多了一个const修饰返回值。第一行代码返回的是scalar类型的数据(是个值),第二行代码返回的是vectorField类型的对象的引用,这是两者的区别。为什么要在返回对象的引用前加const?这是为了提高效率,加了const,在返回对象的引用(不是副本)时,不用调用构造函数创建对象。
- 通俗地讲,在函数后面加const修饰,表示程序员不允许该函数改变对象的数据,这也是这两行代码函数后面都加const的原因。
-
感谢二位前辈的回复,我差不多理解这个意思了