面试题答案
一键面试在C++中,不能在派生类中重写基类的静态函数。原因如下:
- 静态函数属于类,而不属于类的对象实例。它不依赖于任何对象状态,没有this指针。而重写(override)机制依赖于虚函数表和this指针来实现动态绑定,由于静态函数没有this指针,所以无法参与重写。
通过派生类对象调用静态函数:
Derived d;
d.staticFunction();
通过派生类类名调用静态函数:
Derived::staticFunction();
这两种调用方式实际上调用的都是Base类中的staticFunction
,因为静态函数不能被重写。