首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在const func (const标量& a) const中有三个“const”,为什么?

在const func (const标量& a) const中有三个“const”,为什么?
EN

Stack Overflow用户
提问于 2012-05-30 06:33:56
回答 2查看 436关注 0票数 3

新手来了!

我正在阅读一段代码,我看到作者经常将成员函数编写为

代码语言:javascript
复制
const int func (const scalar& a) const
// etc

你看这里有三个常量,现在我理解了中间的一个,常量标量& a,它的目的是不改变对象a,但是另外两个常量呢?

我应该一直这样做,以保护废话不变,这是一个好习惯吗?

非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-30 06:48:37

您发布的代码无效,它将无法编译。然而,如果你考虑到

代码语言:javascript
复制
class MyClass {
  const int& func (const scalar& a) const {
    // ...
  }
};

第一个const将指定返回值为常量(即不可变)。第二个const (const scalar& a)指定该函数不修改参数a的值。第三个常量指定func是一个常量成员函数,即它不修改MyClass实例本身。

票数 7
EN

Stack Overflow用户

发布于 2012-05-30 14:12:28

因为还没有人提到它:绝对没有区别

代码语言:javascript
复制
const int some_function();

代码语言:javascript
复制
int some_function();

标量返回类型(如int)上的const被忽略;它只与类类型有关。related

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10807671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档