クラス・テンプレートのメンバー関数

C++テンプレートのメンバー関数を、そのクラス・テンプレート定義の外側に定義できます。

クラス・テンプレート特殊化のメンバー関数を呼び出す場合、 コンパイラーは、以前、クラス・テンプレートの作成に使用したテンプレート引き数を使用します。 次の例は、このことを示しています。

template<class T> class X {
   public:
      T operator+(T);
};
 
template<class T> T X<T>::operator+(T arg1) {
   return arg1;
};
 
int main() {
   X<char> a;
   X<int> b;
   a +'z';
   b + 4;
}

多重定義された加法演算子は、クラス X の外側で定義されています。 ステートメント a + 'z' は、a.operator+('z') と同等です。 ステートメント b + 4 は、b.operator+(4) と同等です。

関連参照

IBM Copyright 2003