Effective C++ Item 412009年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);
};

前回次回