1

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;
    }
};

さて、私の質問は、インターフェイスでの静的メソッドの使用は何ですか。そして、仮想テーブルなどに何が起こったのか。このインターフェースを実装するクラスの仮想テーブルはどうなるでしょう。頭に浮かぶ質問はたくさんあります。このタイプのクラス、つまりインターフェイス クラスは、ここでは非静的メソッドを定義できないため、単純な抽象クラスと同等ではありません。

インターフェイスで静的を許可することの知恵を知りたいだけです。これは確かに、IMO の OOP 原則に反しています。

4

1 に答える 1

3

この質問に答える最も簡単な方法は、.NET Reflector を使用して、コードから生成されたアセンブリを調べることです。

VTable には仮想関数のみが含まれるため、静的関数は含まれません。

この言語は Managed C++ ではなく、C++/CLI と呼ばれます (これは 2002 年までは悪いことでした)。

これは、もともと純粋なインターフェースの概念をまったく含んでいなかった OOP の原則とは何の関係もありません。

于 2009-03-18T07:43:24.850 に答える