Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ デフォルト型パラメータ付きテンプレート | クラステンプレート
C++テンプレート

bookデフォルト型パラメータ付きテンプレート

メニューを表示するにはスワイプしてください

クラステンプレートにはデフォルトのパラメータ型を指定することが可能であり、C++11以降では関数テンプレートにもデフォルトテンプレート引数を使用できます。デフォルト型を設定するには、テンプレートパラメータの後に等号と希望する型を記述します。

main.cpp

main.cpp

copy
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に設定されているため、小数部分が切り捨てられるためです。

Note
注意

デフォルト関数引数と同様に、1つのテンプレートパラメータにデフォルト引数が指定されている場合、その後に続くすべてのテンプレートパラメータにもデフォルト引数を指定する必要があります。

デフォルト型パラメータに加えて、C++ ではデフォルト値を持つ非型テンプレートパラメータも使用可能です。非型パラメータには整数型、ポインタ、参照などが利用できます。非型デフォルトパラメータを指定するには、パラメータの後にデフォルト値を代入します。

array.h

array.h

copy
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` }

デフォルトのテンプレートパラメータは、コードの簡素化、冗長性の削減、一般的なユースケースへの対応を容易にし、必要に応じてカスタマイズも可能にする。

question mark

テンプレートパラメータにデフォルト値がある場合、次のうちどれが正しいか?

すべての正しい答えを選択

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 3.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 3.  3
some-alt