Cpp テンプレート

提供:yonewiki
2024年2月27日 (火) 19:48時点におけるYo-net (トーク | 投稿記録)による版 (→‎テンプレート)

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++に戻る