2009-03-18 6 views
1

Les interfaces dans l'aspect C++ managé me paraissent étranges puisqu'elles permettent des méthodes statiques et des membres à l'intérieur d'elles. Par exemple, suit est une interface MC++ valide.classe d'interface dans Managed C++

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

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

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

Eh bien, ma question est quelle est l'utilisation de méthodes statiques dans une interface. Et qu'est-il arrivé aux tables virtuelles, etc. Quelle sera la table virtuelle des classes implémentant cette interface. Il y a beaucoup de questions qui me viennent à l'esprit. Ce type de classe, c'est-à-dire la classe d'interface, n'est pas équivalent à une classe abstraite simple car nous ne pouvons pas avoir de définition de méthodes non statiques ici.

Je veux juste savoir la sagesse de permettre la statique dans l'interface. C'est certainement contre les principes OOP OMI.

Répondre

3

La meilleure façon de répondre à cette question est d'utiliser .NET Reflector pour examiner l'assembly généré à partir du code. Un VTable ne contient que des fonctions virtuelles, donc la statique ne serait tout simplement pas incluse.

Le langage est appelé C++/CLI, pas géré C++ (c'était quelque chose de mauvais depuis 2002).

Ceci n'a rien à voir avec les principes de la POO, qui à l'origine n'incluaient jamais le concept d'une interface pure.