デフォルト型パラメータ付きテンプレート
メニューを表示するにはスワイプしてください
クラステンプレートにはデフォルトのパラメータ型を指定することが可能であり、C++11以降では関数テンプレートにもデフォルトテンプレート引数を使用できます。デフォルト型を設定するには、テンプレートパラメータの後に等号と希望する型を記述します。
main.cpp
123456789101112131415#include <iostream> template <typename T = int> // `int` will be used as a default type class Box { T value; // Stores the value of type `T` public: Box(T value) : value(value) { std::cout << this->value; } }; int main() { // Type not specified // VV Box<> intBox(25.5); }
上記のコードを実行すると、出力は25ではなく25.5になります。これは、Boxクラスのデフォルト型がintに設定されているため、小数部分が切り捨てられるためです。
注意
デフォルト関数引数と同様に、1つのテンプレートパラメータにデフォルト引数が指定されている場合、その後に続くすべてのテンプレートパラメータにもデフォルト引数を指定する必要があります。
デフォルト型パラメータに加えて、C++ ではデフォルト値を持つ非型テンプレートパラメータも使用可能です。非型パラメータには整数型、ポインタ、参照が利用できます。非型デフォルトパラメータを指定するには、パラメータの後にデフォルト値を代入します。
array.h
123456// `int` and `10` are default parameters template <typename T = int, size_t Size = 10> struct Array { T arr[Size]; // Array with a fixed size of `Size` }
デフォルトのテンプレートパラメータは、コードの簡素化、冗長性の削減、一般的なユースケースへの対応を容易にし、必要に応じてカスタマイズも可能にする。
すべて明確でしたか?
フィードバックありがとうございます!
セクション 1. 章 11
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください
セクション 1. 章 11