我在接受采访时被问及在C++中使用带有类声明的virtual关键字的用法是什么,我回答说虚拟关键字不能与C++中的类声明一起使用.面试官说这是可能的,并让我稍后进行测试.
现在我已经自己检查了一下,我已经知道这是可能的,这不是编译器错误.事实上,当我使用Visual C++编译器执行类似的操作时:
virtual class Test
{
int i;
};
Run Code Online (Sandbox Code Playgroud)
我得到一个编译器警告"警告C4091:'virtual':当没有声明变量时,在'Test'的左边忽略".我还没有发现这个警告意味着什么,以及虚拟关键字的用法是什么.如果没有有用的用法,那么为什么首先允许这样做,为什么这不是编译器错误.
从另一个类派生时可以使用virtual:
class Foo : public virtual Bar
{
}
Run Code Online (Sandbox Code Playgroud)
这用于避免在使用多重继承时具有相同基类的多个版本.维基百科有一篇关于这个主题的好文章.
这是VC++中的一个错误.Comeau和gcc都拒绝代码.