静态成员函数属于类本身(所有对象共用),不属于类中的任何一个对象。this指针指向的是每一个对象,不能用this指针来访问。但是对于虚函数的调用需求this指针。所以静态成员函数不能是虚函数。
在有虚函数的类实例中,this指针调用vptr指针,指向的是vtable(虚函数列表),通过虚函数列表找到需要调用的虚函数的地址。总体来说虚函数的调用关系是:this指针->vptr->vtable ->virtual虚函数。静态函数没有this指针,无法找到虚函数。所以静态成员函数不能是虚函数。
静态成员函数属于类本身(所有对象共用),不属于类中的任何一个对象。this指针指向的是每一个对象,不能用this指针来访问。但是对于虚函数的调用需求this指针。所以静态成员函数不能是虚函数。
在有虚函数的类实例中,this指针调用vptr指针,指向的是vtable(虚函数列表),通过虚函数列表找到需要调用的虚函数的地址。总体来说虚函数的调用关系是:this指针->vptr->vtable ->virtual虚函数。静态函数没有this指针,无法找到虚函数。所以静态成员函数不能是虚函数。