Cpp テンプレート
C++に戻る
本来の表記は「C++ テンプレート」です。この記事に付けられた題名はテンプレート:記事名の制約から不正確なものとなっています。 |
※このページではC++にのみ存在する機能として、記事タイトルがC++ テンプレートになっています。
テンプレート
クラスのテンプレートは以下のような記述形式で定義します。
template <class TYPENAME>
class Class_Name {
}
のようにしてTYPENAMEに任意の型名を受け取ることを想定したクラス定義したテンプレートになります。
そして利用するときに、int型で定義したい場合は
Class_Name<int> intPair(10, 20 /*コンストラクタ引数群*/);
のようにします。
ここからは、サンプルプログラムをまず示して、それについて説明します。ここでは T が任意の型を当てはめることを想定した型名変数に相当します。
#include <iostream>
// テンプレートを使用したジェネリックなPairクラスの定義
template <class T>
class Pair {
private:
T first;
T second;
public:
// コンストラクタ: デフォルト引数を使用して初期化
Pair(const T& initFirst = T(), const T& initSecond = T())
: first(initFirst), second(initSecond) {}
// 1番目の要素を返すメソッド
T getFirst() const {
return first;
}
// 2番目の要素を返すメソッド
T getSecond() const {
return second;
}
// 1番目の要素への参照を返すメソッド
T& refFirst() {
return first;
}
// 2番目の要素への参照を返すメソッド
T& refSecond() {
return second;
}
// 演算子のオーバーロード: Pairオブジェクトの表示
friend std::ostream& operator<<(std::ostream& os, const Pair<T>& pair) {
return os << "[" << pair.getFirst() << ", " << pair.getSecond() << "]";
}
};
int main() {
// int型のPairオブジェクトを生成
Pair<int> intPair(10, 20);
// 値の表示
std::cout << "Pair of integers: " << intPair << std::endl;
// 1番目の要素への変更
intPair.refFirst() = 30;
// 変更後の値を表示
std::cout << "Modified pair: " << intPair << std::endl;
return 0;
}
1.テンプレートを使用したジェネリックなPairクラス:
Pairクラスはテンプレートを使用しており、Tは任意の型を表します。これにより、異なる型のデータを格納することができます。
2.デフォルト引数を使用したコンストラクタ:
コンストラクタはデフォルト引数を使用して初期化を行います。これにより、引数を省略した場合にはデフォルト値が使用されます。
3.メソッドの説明:
getFirstおよびgetSecondメソッドは、それぞれ1番目と2番目の要素を取得します。 refFirstおよびrefSecondメソッドは、それぞれ1番目と2番目の要素への参照を返します。
4.演算子のオーバーロード:
operator<<関数は、Pairオブジェクトを出力ストリームに挿入するための演算子のオーバーロードです。これにより、std::cout << intPairといった形で直接表示できます。
5.main関数:
Pair<int>型のオブジェクトを生成し、その値を表示します。後に1番目の要素を変更して再び表示します。
C++に戻る