代码之家  ›  专栏  ›  技术社区  ›  Aamir

使用带有类声明的virtual关键字

  •  1
  • Aamir  · 技术社区  · 17 年前

    我在一次采访中被问及,在C++中使用类声明的虚拟关键词的用法是什么,我回答说,虚拟关键字不能与C++中的类声明一起使用。面试官说这是可能的,并让我稍后测试。

    现在我已经亲自检查过了,我知道这是可能的,这不是一个编译器错误。事实上,当我用VisualC++编译器做这样的事情:

    virtual class Test
    {
       int i;
    };
    

    6 回复  |  直到 17 年前
        1
  •  6
  •   Sean    17 年前

    事实上的

    class Foo : public virtual Bar
    {
    }
    

    这用于避免在使用多重继承时具有同一基类的多个版本。 Wikipedia

        2
  •  6
  •   James Hopkin    17 年前

    这是VC++中的一个bug。Comeau和gcc都拒绝该代码。

        3
  •  2
  •   leiz    17 年前

    您根本无法将虚拟机用于类。它只适用于成员函数

        4
  •  2
  •   Timo Geusch    17 年前

    您看到的是一种错误的用法-我很确定面试官指的是虚拟基类声明,如下所示:

      class A : virtual public B, public C {
        ...
      };
    

    您可以通过类图找到更详尽的描述 here .

        5
  •  1
  •   Nik    17 年前

    也许他指的是虚拟继承/虚拟基类?例如。

    class A : virtual public B
    { ... }
    

    这在技术上是类定义的一部分。

        6
  •  1
  •   GrahamS    17 年前

    这样地:

    class CashierQueue : virtual public Queue {};
    

    当希望避免派生类从共享同一基类的两个或多个类继承时具有成员数据的多个副本时,可以在多重继承中使用此选项。

    class Queue {};
    class CashierQueue : virtual public Queue {};
    class LunchQueue : virtual public Queue {};
    class LunchCashierQueue : public LunchQueue, public CashierQueue {};
    

    看见 http://msdn.microsoft.com/en-us/library/wcz57btd(VS.80).aspx