const func (const scalar& a) const 中的三个"const" s,为什么?
Three "const"s in const func (const scalar& a) const, why?
>新手在这里!
我正在阅读代码,我看到作者经常将成员函数编写为
const int func (const scalar& a) const
// etc
你看这里有三个常量,现在我理解了中间的一个,const scalar&a,它旨在不改变对象a,但是另外两个const呢?
我应该一直这样做,以保护废话不变,这是一个好习惯吗?
多谢!
您发布的代码无效,无法编译。但是,如果您考虑
class MyClass {
const int& func (const scalar& a) const {
// ...
}
};
第一个const
将指定返回值是常量(即不可变)。第二个const
(const scalar& a
) 指定函数不修改参数值的值 a
。第三个 const 指定 func
是一个常量成员函数,即它不会修改MyClass
实例本身。
既然还没有人提到它:两者之间绝对没有区别
const int some_function();
和
int some_function();
标量返回类型(如 int
)上的const
被忽略;它只对类类型很重要。
相关文章:
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 在 2D 向量中使用第三个 [ ] 有什么意义?
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- 如何知道n!是否可以表示为三个连续数字的乘法?
- 我有三个 getline,但是一旦编译,输入就太多了
- 我遇到了黑客排名中的问题"TWO STRINGS"的三个测试用例的分段错误。原因是什么?
- 有没有更好的方法对C++中的三个整数进行排序?
- 如何检查第三个 API 是否在 Linux 中为 c/c++ 程序创建了一个新线程?
- 为什么 getch 在按下函数或箭头键时返回三个值?
- 使用三个数字比较器进行排序
- 我想在C++代码中比较这三个术语
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 我该如何编码,使计算机知道两个名称条目和三个名称条目之间的区别
- 为什么我需要三个嵌套的大括号来调用赋值运算符,将const引用到二维数组
- 如何通过通用引用或std::forward将这三个c++模板函数合并为一个
- 首先处理第二个和第三个堆与第一个和第二个堆之间的逻辑差异
- 异常处理:如果用户输入不是三个特定字符之一
- 为什么将三个变量与 == 一起比较会计算为 false?
- 调用接受三个参数的函数出现问题,其中一个是 int const
- const func (const scalar& a) const 中的三个"const" s,为什么?