2009-07-15 14 views
1

複数の継承が必要なシナリオはありますか?例を挙げてください。複数の継承が必要なシナリオはありますか?

+5

はい。あなたも例が欲しいですか?あなたはいくつかを求める必要があります。 – Welbog

+1

いいえ、ほとんどのチューリング完全言語はサポートしていません。 –

+0

これは、http://stackoverflow.com/questions/573913/a-use-for-multiple-inheritanceに近いと思います。 – Arnkrishn

答えて

0

開発者が怠け者であり、複数の継承を必要としないより優れたクラスデザインを作成したくない場合は、私は主にC#でコードを作成し、自分のデザインだけを呪われたシナリオは見つけられません単一の継承が可能です。言い換えれば、複数のインターフェイスを実装できるということは、は、が本当に便利だと言われています。

+0

しかし、おそらく複数のインタフェースを使用しています(または、継承とインタフェースの両方を使用しています)。しかし、C++には独立した概念としてのインタフェースがないため、これはC++での多重継承となります。 (C++の開発者は、実装されたメソッドを持たないクラスとしてインターフェイスを考えているだけです)。 –

4

他のOOP言語が持っているインタフェースのようなものをシミュレートする場合は、複数の継承を使用する必要があります。あなたはチューリングマシン以上のものが必要で何のシナリオはありませんJavaでまたはC#

+0

+1、まさに私が言うこと –

+0

インターフェイスは、より一般的な多重継承(例えば、純粋仮想抽象基底クラス)の限定された特殊なケースです。 –

+0

さらに、インターフェイスは実装の* contract *です。クラス継承は*実際の実装です。 1つだけの実装継承(別名Java、C#など)に制限されない限り、contract *と* implementation(純粋仮想+実装関数)の両方を持つことができます。 – WhozCraig

1

純粋な抽象クラスを使用すると、インターフェイスを持つことができます。

0

行うよう

2

継承を「必要とする」もので、単一のクラスで複数回使用するか、単一のクラスで結合するものは、複数の継承が必要です。継承を使用

共通のC++のイディオムは、抽象クラスを使用して

を特色。ポリシーベースのイテレータータイプが必要な場合は、複数の継承が必要です(ポリシー用に1回、特性用に1回)。

明らかに、同じ出力を持ち、多重継承を使用しないプログラムを書くことができます( "Turing complete we are about we care about"引数)ので、私はsnigger quotesに "requires"を入れます。しかし、チューリングの完全性はではなく、です。私たちは、チューリングの入力と出力を持つプログラムの概念を超えてソフトウェアを書くという目標を持っています。私たちはソースがどのように見えるか気にします。したがって、「必要」。

0

COMオブジェクトをビルドするとき。

関連する問題