新乡网站开发,长春火车站在哪,微网站html5模板,响应式网站什么意思在面向对象编程中#xff0c;静态成员函数和虚函数都是常见的概念#xff0c;但它们之间存在着本质上的差异。由于其特性上的差异#xff0c;静态成员函数不能声明为虚函数。下面我们来探讨一下为什么静态成员函数不能是虚函数。 我在网上查到最多的说法是静态函数没有this指…在面向对象编程中静态成员函数和虚函数都是常见的概念但它们之间存在着本质上的差异。由于其特性上的差异静态成员函数不能声明为虚函数。下面我们来探讨一下为什么静态成员函数不能是虚函数。 我在网上查到最多的说法是静态函数没有this指针也就无法找到虚函数。所以静态成员函数不能是虚函数。他们的关键区别就是this指针。
我并不认可这个说法假设一个基类指针指向一个子类地址并且该子类完成了重写现在我要调用该重写后的函数过程是父类指针-vptr(虚函数表指针-vtable虚函数表 -virtual虚函数因此我并不认为该过程需要用到this指针除非该虚函数用了使用了类内成员。
我认为静态函数不能做虚函数主要是因为他们的概念本身就矛盾静态函数的主要功能是提供类的全局功能不依赖于特定对象的调用。而虚函数是用来实现多态的多态的功能是使用统一的接口来处理不同类的对象而无需关心对象的具体类型从而实现代码的灵活性和可扩展性。
可以看到静态函数的核心是不依赖对象而多态的核心是基于不同对象相互矛盾因此静态成员不能是虚函数因为没有意义而并非技术上达不到。
以上纯属个人理解有不同意见欢迎讨论。