【发布时间】:2014-04-03 06:03:12
【问题描述】:
考虑以下代码:
class Test
{
public:
//1
int kon1() const;
//2
const int kon2();
//3
static int kon3();
};
据我所知,功能1和2的区别在于:
- 函数 1 表示该函数将无法更改任何数据成员的值
- 函数 2 表示它将返回一个 const int
(如果理解有误,请指正)
我的问题是: 正如我们在那里看到的,如果我们想让一个函数成为 const 函数,则 const 关键字放在后面。但是为什么在函数3,静态函数中,static关键字放在前面呢?
【问题讨论】:
-
因为语言是这样定义的? (具体来说,这是从 C 继承的。)
-
函数 1 表示任何变量或对象的状态都不应该改变,但它可以改变可变变量的状态。
-
您的代码回答了您自己的问题 - 它不能在前面,或者您无法区分返回
int的const函数和返回的非const函数const int。不过,这些选择确实看起来很随意……例如virtual在前面,override在后面.... -
@OliCharlesworth 我知道格式已定义,但我对这个答案不太满意
-
@TonyD 感谢您澄清我的理解,但我在问函数 1 2 3 之间的区别,在我的问题中用粗体表示:)
标签: c++ static constants qualifiers