【发布时间】:2018-11-18 09:16:51
【问题描述】:
第二个声明 foo:B() 真正的 const 含义是什么?
int foo::A() const {
return m_var;
}
int const foo::B() {
return m_var;
}
对于第一个声明,我确信它“保护”了成员变量,即 m_var。
但是第二个声明的全部含义是什么,它只是返回一个常量 int 给调用者,可能是非常量变量?我的意思是这是否有意义?
【问题讨论】:
-
返回
const值根本没有意义。 -
不仅如此,组成
foo f;的表达式f.B()的类型是int。所以我会说这对基本面值类型具有负面意义。对于某些用户定义的类型,在 C++11 之前,这样做是有边际意义的。现在没有了。 -
有或没有
const,f.B() = 5;是一个错误,所以它没有意义 -
那是错误的骗局。 OP有两个例子。第一个是 const 方法,问题是关于第二个。投票重新开放
-
@user463035818 我严重不同意。这两个骗子完美地解释了
const关键字对两个代码示例的作用。
标签: c++ function constants class-design