2016-04-26 4 views
-2

私は次のコードを持っているとしましょう。クラスmathからクラスaddを派生させて関数sumを宣言し、関数sumを実装するaddNumbersというクラスを派生させることは可能でしょうか。異なるクラスのクラスメンバ関数を実装することは可能ですか

class math 
{ 
public: 
virtual int sum() = 0; 
} 

class add : public math 
{ 
public: 
int sum(); 
} 

class addNumbers : public add 
{ 
private: 
int a, b; 

public: 
add::sum() 
{ a + b} 

} 
+1

多態性の仕組みを理解していますか? – rwols

+0

'class add'から' int sum(); '宣言を削除するだけです。 –

+0

@rwols、それは明らかではありません:)そのため質問です。 –

答えて

1

それはクラスの数学の追加と機能の合計を宣言したクラスを派生することが可能であろう、その関数の総和を実装addNumbersと呼ばれるアドオンからクラスを派生します。

sumは、それはあなたがそれを持っているように宣言されている場合addに実装する必要があります。それ以外の場合は、リンカーエラーが表示されます。

addsumを実装するのに十分な情報がない場合は、addsumを宣言しないでください。宣言し、それをaddNumbersに定義します。

アップデートは、OPのコメント

使用

class add : public math 
{ 
    // Add whatever is needed for this class 
} 

class addNumbers : public add 
{ 
    private: 
     int a, b; 

    public: 
     int sum() 
     { 
     return (a + b) 
     } 

}; 
+1

さて、宣言を残しておけば、それはちょうど透明です。 –

+0

私はそれが私がそれをしたいように動作するように私のサム関数を宣言する必要がありますか? – user3076906

+0

@ user3076906、更新を参照してください。 –

0

に応じて、あなたはaddNumberssum機能を実装することができます。 sum関数は、数学クラス内で事実上宣言します。しかし、あなたは実質的にaddsumの機能を定義していませんでしたが、それは仮想です。したがって、addNumberssumを定義/実装することができ、addクラスの前回の宣言で上書きされます。

関連する問題