为何static成员函数不能为virtual

为何static成员函数不能为virtual

1. static成员不属于任何类对象或类实例,所以即使给此函数加上virutal也是没有任何意义的。 2. 静态与非静态成员函数之间有一个主要的区别。那就是静态成员函数没有this指针。 虚函数依靠vptr和vtable来处理。vptr是一个指针,在类的构造函数中创建生成,并且只能用this指针来访问它,因为它是类的一个成员,并且vptr指向保存虚函数地址的vtable. 对于静态成员函数,它没有this指针,所以无法访问vptr. 这就是为何static函数不能为virtual. 虚函数的调用关系:this -> vptr -> vtable ->virtual function 通过下面例子可以确定,当类增加了一个虚函数后,类的大小会增大4字节(指针的大小).

相关推荐

聚合支付收款码收费方式详解
beat365下载唯一官方网

聚合支付收款码收费方式详解

08-15 👁️ 548
寶可夢 劍/盾
beat365下载唯一官方网

寶可夢 劍/盾

08-03 👁️ 3573
《星露谷物语》最好的妻子介绍
必发365手机app

《星露谷物语》最好的妻子介绍

09-27 👁️ 9395
减刑一次最多减多少年
必发365手机app

减刑一次最多减多少年

08-12 👁️ 9373
巴西队94年世界杯阵容(世界杯经典回顾之-1994年美利坚之夏)
戴尔键盘更换
必发365手机app

戴尔键盘更换

07-02 👁️ 297