2011-08-07 6 views
3

私はcppにinterfaceを作成してそのクラスを実装するクラスを作成し、そのクラスは親クラスの関数を実装する必要があります。すべての機能が実装されていない場合は、エラーを表示する必要があります。cppのインターフェース

class parent { // interface class 
    public : 
     virtual void display(); 
} 
class base : public parent { 
    void display(); // this method must be implemented in this class 
} 

このタイプの継承をC++で手伝ってください。

+0

ptrを親から削除しようとすると仮想dtorも必要です: 'virtual〜parent(){}' –

+0

@andeas、これは単なるサンプルコードですが、私は実際のコードでそれを行いました。 –

答えて

9

は純粋仮想メンバ関数を使用します。

virtual void display() = 0; 

これは(あなたがそれのインスタンスを作ることができない)クラスの抽象を行い、任意の非抽象導出クラスでは、このような機能を実装する必要があります。ここで

は、より正式な定義とウィキペディアのリンクです: http://en.wikipedia.org/wiki/Virtual_function#Abstract_classes_and_pure_virtual_functions

+3

Nitpickですが、派生クラスは純粋な仮想メソッドを実装する必要はありませんが、そうでなければ抽象クラスです。 – john

+0

良い点が編集されました。 –

+0

@john、ありがとうございました。 –

7

ただ、1つの変更

class parent { // interface class 
    public : 
     virtual void display() = 0; 
} 

は、これはC++での純粋仮想関数と呼ばれます。

0

あなたは抽象クラス(または純粋仮想クラス)を使用することができます。彼らは、コンパイラの視点で異なっていたものの、

class AB { 
public: 
    virtual void f() = 0; 
}; 

抽象クラスは、Javaの/ C#でインターフェースのようなCPPに使用することができます。