интерфейсный класс в Managed C ++ - PullRequest
1 голос
/ 18 марта 2009

Интерфейсы в 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;
    }
};

Ну, мой вопрос в том, что такое использование статических методов в интерфейсе. И что случилось с виртуальными таблицами и т. Д. Какими будут виртуальные таблицы классов, реализующих этот интерфейс. Есть много вопросов, которые приходят на ум. Этот тип класса, т. Е. Интерфейсный класс, не эквивалентен простому абстрактному классу, так как здесь у нас нет определения нестатических методов.

Я просто хочу знать мудрость использования статики в интерфейсе. Это безусловно противоречит принципам ООП ИМО.

1 Ответ

3 голосов
/ 18 марта 2009

Самый простой способ ответить на этот вопрос - использовать .NET Reflector для проверки сборки, сгенерированной из кода.

VTable содержит только виртуальные функции, поэтому статика просто не будет включена.

Язык называется C ++ / CLI, а не Managed C ++ (это было что-то плохое с 2002 года).

Это не имеет ничего общего с принципами ООП, которые изначально никогда не включали концепцию чистого интерфейса.

...