为什么static void method()const被编译错误?

时间:2015-03-19 15:32:15

标签: c++

我接受采访时,面试官问我一个关于C ++中const和static关键字的问题;问题是为什么你不能定义这样的成员函数:

static void func() const

他有点提到* this = null导致了这个问题,我只是没有得到他的想法,他没有详细谈论。

3 个答案:

答案 0 :(得分:11)

尾随const限定符应用于this指针,该指针作为隐式参数传递给每个非static成员函数。由于有问题的函数是static,因此没有this指针可以被限定,因此构造是伪造的。

答案 1 :(得分:3)

const关键字用于防止您修改调用该方法的对象。不会针对对象调用静态方法,因此将它们包含在内都没有意义。

答案 2 :(得分:3)

static表示该方法是类方法,并且不对该类的特定实例进行操作。

const表示该方法对该类的常量实例进行操作。

由于static不对实例运行而const对实例进行操作,因此它们不能同时适用。