- 341 名前:デフォルトの名無しさん mailto:sage [2007/07/01(日) 18:49:35 ]
- NVI=non virtual interface のこと。つまり↓
struct Hoge { void hage(T1 arg1, T2 arg2) {_hage(arg1, arg2); } protected: virtual void _hage(T1 arg1, T2 arg2) = 0; }; 下位クラスには_hageを継承してもらう。 なぜこんなことをするのか) 公開仮想インターインターフェイスが果たす目的は以下の二つ(と言われてる^^) 1. 使う人に使い方(インターフェイス)を提供する 2. 派生クラスに「こういうふうにメソッドを継承して下さい」とカスタマイズの規約を提供している たとえば、NVIを使わず下位クラスがhageをそのまま継承してしまうと Hoge#_hageのインターフェイスを変更したときに下位クラスすべてのメソッドを書き直す必要があるんだけど、 もしNVIを採用していればそういうことにはならない。 逆にインターフェイスを変更せず、実装メソッドの方だけを変更することもできる。 >>336の場合、インターフェイスが変更される可能性は全く無くて、無駄に複雑にしてるだけだと思う。
|

|