MST

星途 面试题库

面试题:C++中静态函数在类继承体系中的表现

在C++中,假设有一个基类Base和一个派生类Derived,Base类中有一个静态函数staticFunction。请说明在派生类中能否重写这个静态函数?如果可以,描述其行为;如果不可以,解释原因。并且说明如何通过派生类对象和类名来调用这个静态函数。
30.5万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

在C++中,不能在派生类中重写基类的静态函数。原因如下:

  • 静态函数属于类,而不属于类的对象实例。它不依赖于任何对象状态,没有this指针。而重写(override)机制依赖于虚函数表和this指针来实现动态绑定,由于静态函数没有this指针,所以无法参与重写。

通过派生类对象调用静态函数

Derived d;
d.staticFunction(); 

通过派生类类名调用静态函数

Derived::staticFunction(); 

这两种调用方式实际上调用的都是Base类中的staticFunction,因为静态函数不能被重写。