以下说法正确的是(多选)

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

B. C++不支持友元函数的继承,对于没有继承特性的函数没有虚函数的说法。

C. 如果在类外定义虚函数,只能在声明函数时加virtual关键字,定义时不用加。

D. 基类中定义了虚函数,在派生类中即使不加virtual该函数始终保持虚函数的特性。

为什么?

A、D正确。B错误,C有歧义,需要具体情况具体分析。

C++中,如果在类内声明虚函数,在类外定义时需要加上virtual关键字。如果在类外声明虚函数,则不需要加上virtual关键字。

关于D,基类中定义了虚函数,派生类中即使不加virtual关键字,该函数依然会被视为虚函数。因为在派生类中重写该函数时,函数名和参数列表都必须和基类中的虚函数一致,这样编译器就能够通过函数名和参数列表的匹配来确定函数的调用方式(动态绑定)。因此即使不加virtual关键字,该函数也会被视为虚函数。

C++ 多选题:关于static、友元、虚函数的正确说法

原文地址: https://www.cveoy.top/t/topic/ojy0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录