かたわく


📒 かたわく

  • は、異なる種類について同じ動作を実行する機能
  • である.

    ✔関数テンプレート

    template<typename T>
    T get_max(T a, T b){
    	return a > b ? a : b;
    }
    データ型を変数としてマークし、異なるデータ型で使用できるようにします.

    ✔関数テンプレートの特殊化


    charの場合だけ違う表現をしたいなら!
    template<>
    char get_max(char a, char b){
    	return a;
    }

    ✔複数種類のパラメータを持つ関数テンプレート

    template<typename T1, typename T2>
    T1 printsum(T1 a, T2 b){
    	return a + b;
    }

    ✔類テンプレート

    template<typename 타입이름> 
    class classname
    {
    	...
    }
    template<typename T>
    class Box{
    	...
    };
    
    
    int main(){
    
    	Box<int> a;
        Box<float> b;
        Box<string> c;
    }
    クラスの外でテンプレートメンバー関数を定義します.
  • 関数テンプレートのように、関数定義の前にtemplateを使用します.使用する必要があります.
  • クラステンプレートのパラメータにデフォルト値を割り当てることもできます.
    template<typename T = int>
    ex) Box<> box;
    テンプレートを使用するメリット

  • クラスを作成するまでコードは生成されません.(コードのサイズを増やさない)

  • クラステンプレートで生成されたすべてのクラスについて、静的メンバーごとに1つが生成されます.