読者です 読者をやめる 読者になる 読者になる

ポリシークラスってなんぞや?〜その5〜

1章1.4節 テンプレートが希望の光を投げる(残り)

ここで、多重継承の欠点と、テンプレートの欠点を見直すと、お互い相補的な関係にあることがわかる(らしい)。


  • 多重継承にはメカニズムがないが、テンプレートには豊富なメカニズムがある
  • 多重継承では、型情報を保持できないが、テンプレートはできる
  • テンプレートの特殊化にはスケーラビリティがありませんが、多重継承は高いスケーラビリティをもつ
  • テンプレートのメンバ関数には、デフォルトを1つしか実装できないが、基底クラスにはいくつでも指定することができる


多重継承にはメカニズムがないが、テンプレートには豊富なメカニズムがある

多重継承だけでは、なんでもかんでも組み合わせられちゃうけど、テンプレートだといろいろと制限かけられる。




多重継承では、型情報を保持できないが、テンプレートはできる

テンプレート引数を使えば、型情報を伝えることが可能。




テンプレートの特殊化にはスケーラビリティがありませんが、多重継承は高いスケーラビリティをもつ

多重継承なら、基底クラスで、いくらでも関数を追加できるし、メンバも増やせる。
ッてことだと思う。


テンプレートクラスの特殊化を使えば、同様にいくらでも関数やメンバを増やせそうな気がするが、特殊化のたびに実装を書かなくてはならない。
たとえば、テンプレート引数を5つ受け取るクラスがあって引数がの時の実装を書いた後に、ちょっとだけ違うの時があったとしたら、それもまた実装をフルに書き直さなくてはならない。


ってことだと思う。たぶん。

テンプレートのメンバ関数には、デフォルトを1つしか実装できないが、基底クラスにはいくつでも指定することができる


>テンプレートのメンバ関数には、デフォルトを1つしか実装できない
うん、まぁ、その通り。



>基底クラスにはいくつでも指定することができる
これは、どういうことだろう。
お好みの実装を持った基底クラスをいくつでも用意できるってことだろうか?









ということで、

多重継承とテンプレートを組み合わせることによって、
設計用の素材としてのライブラリを生成するための適切、 
かつ非常に柔軟なツールを作り出すことができる。

ということなんだそうな。



んで、これが、ポリシークラスということらしい。
まぁ、なんとなく分かったような気が…。




たぶん、つづく...


P.S
こーいう風に、日を分けて書くと、なかなか続かない。
一気に書かないとなぁ。
連続書き込み記録が途絶えてしまった。
反省。