interface

インターフェイスはC++でいえば、純粋仮想関数のみを含むクラス、のようなものです。キーワードinterface classを用いて定義し、その型は以下の宣言を含むことができます。

もちろん含めることができるのは宣言だけであり、定義することはできません。

C++/CLIのref classはref classに対して単一継承しかできませんが、インターフェースはいくつも多重継承できます。このへんはJavaと同じです。クラスAから派生したクラス Bがあるとし、BはインターフェースIA,IB,ICからも派生しているとするとき、クラスBは以下のように書きます。

interface class IA {
public:
    void funcIA();
};
interface class IB {
public:
    void funcIB();
};
interface class IC {
public:
    void funcIC();
};
ref class A {
    int i;
};
ref class B : A, IA, IB, IC {
public:
    virtual void funcIA() {   }
    virtual void funcIB() {   }
    virtual void funcIC() {   }
};
int main() {
    B^ b = gcnew B;
 
    IA^ ia = b;
    IB^ ib = b;
    IC^ ic = b;
    b->funcIA();
    ia->funcIA();
    ib->funcIB();
    ic->funcIC();
    return 0;
}