「Cpp テンプレート」の版間の差分

提供:yonewiki
(ページの作成:「C++に戻る <table class="mbox-small" style="border:1px solid #aaa; background-color:#f9f9f9; width:22em;" id="RealTitleBanner"> <tr> <td style="width:1px;"></td> <td class="mbox-text plainlist" style="">本来の表記は「<b><span id="RealTitle" style="font-size:large;">C++ テンプレート</span></b>」です。この記事に付けられた題名は{{記事名の制約}}から不正確なものとなっています。</td>…」)
 
11行目: 11行目:
<br />
<br />
== '''テンプレート''' ==
== '''テンプレート''' ==
 クラスのテンプレートは以下のような記述形式で定義します。


<syntaxhighlight lang="cpp">
template <class TYPENAME>
class Class_Name {
}
</syntaxhighlight>
 のようにしてTYPENAMEに任意の型名を受け取ることを想定したクラス定義したテンプレートになります。
 そして利用するときに、int型で定義したい場合は
<syntaxhighlight lang="cpp">
Class_Name<int> intPair(10, 20 /*コンストラクタ引数群*/);
</syntaxhighlight>
 のようにします。
 ここからは、サンプルプログラムをまず示して、それについて説明します。ここでは T が任意の型を当てはめることを想定した型名変数に相当します。
<syntaxhighlight lang="cpp">
#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;
}
</syntaxhighlight>
'''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 PlusPlus#C++からの技術|C++]]に戻る
[[C PlusPlus#C++からの技術|C++]]に戻る

2024年2月27日 (火) 19:48時点における版

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