1

托管 C++ 中的接口对我来说有点奇怪,因为它们允许在其中使用静态方法和成员。例如,以下是一个有效的 MC++ 接口。

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

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

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

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

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

4

1 回答 1

3

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

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

该语言称为 C++/CLI,而不是托管 C++(早在 2002 年就已经很糟糕了)。

这与 OOP 原则无关,OOP 原则本来就没有包含纯接口的概念。

于 2009-03-18T07:43:24.850 回答