Effective C++ Item 41 ― 2009年08月25日 14時25分58秒
- クラスとテンプレートの両方ともインターフェースと継承をサポートする。
- クラスではインターフェースは明示的に示され関数を中心に行なわれる。多態性は仮想関数を通して動的に行なわれる。
- テンプレートではインターフェースは暗示的に行なわれる。多態性はコンパイル時にテンプレートを展開することによって行なわれる。
例。以下のテンプレートクラス T を用いた doProcessing 関数は、下記の Widget クラスのインターフェースを暗示的に要求する。
template<typename T< void doProcessing(T& w) { if(w.size() > 10 && w != someNastyWidget) { T temp(w); temp.nomalize(); temp.swap(w); } } class Widget { public: Widget(); virtual ~Widget(); virtual std::size_t size() const; virtual void normalize(); void swap(Widget& other); };
最近のコメント