我接受采访时,面试官问我一个关于C ++中const和static关键字的问题;问题是为什么你不能定义这样的成员函数:
static void func() const
他有点提到* this = null导致了这个问题,我只是没有得到他的想法,他没有详细谈论。
答案 0 :(得分:11)
尾随const
限定符应用于this
指针,该指针作为隐式参数传递给每个非static
成员函数。由于有问题的函数是static
,因此没有this
指针可以被限定,因此构造是伪造的。
答案 1 :(得分:3)
const
关键字用于防止您修改调用该方法的对象。不会针对对象调用静态方法,因此将它们包含在内都没有意义。
答案 2 :(得分:3)
static
表示该方法是类方法,并且不对该类的特定实例进行操作。
const
表示该方法对该类的常量实例进行操作。
由于static
不对实例运行而const
对实例进行操作,因此它们不能同时适用。