151、静态函数能定义为虚函数吗?常函数呢?说说你的理解

1、static成员不属于任何类对象或类实例,所以即使给此函数加上virutal也是没有任何意义的。

2、静态与非静态成员函数之间有一个主要的区别,那就是静态成员函数没有this指针。

虚函数依靠vptr和vtable来处理。vptr是一个指针,在类的构造函数中创建生成,并且只能用this指针来 访问它,因为它是类的一个成员,并且vptr指向保存虚函数地址的vtable.对于静态成员函数,它没有 this指针,所以无法访问vptr。

 

这就是为何static函数不能为virtual,虚函数的调用关系:

this -> vptr -> vtable ->virtual function

上一篇:SpringBoot如何整合WebSocket? | 带你读《SpringBoot实战教程》之四十一


下一篇:Doxygen wizard - Expert - Man XML Docbook