托管C ++中的接口类

时间:2009-03-18 07:02:52

标签: interface managed-c++ vtable

Managed C ++中的接口看起来有点奇怪,因为它们允许使用静态方法和成员。例如,以下是有效的MC ++接口。

interface class statinterface
{
    static int j;
    void Method1();
    void Method2();

    static void Method3()
    {
        Console::WriteLine("Inside Method 3");
    }

    static statinterface()
    {
        j = 4;
    }
};

好吧,我的问题是界面中静态方法的用途是什么。虚拟表等发生了什么。实现此接口的类的虚拟表是什么。我想到了很多问题。这种类,即接口类不等同于普通的抽象类,因为我们在这里不能定义非静态方法。

我只想知道在界面中允许静态的智慧。这肯定是违反OOP原则的IMO。

1 个答案:

答案 0 :(得分:3)

回答这个问题的最简单方法是使用.NET Reflector检查从代码生成的程序集。

VTable只包含虚函数,因此不会包含静态函数。

这种语言称为C ++ / CLI,而不是Managed C ++(2002年以来这种情况很糟糕)。

这与OOP原则无关,OOP原则最初从未包含纯接口的概念。