ホームページ >バックエンド開発 >C++ >C でデフォルトのテンプレート引数を使用してクラス テンプレートをインスタンス化する方法

C でデフォルトのテンプレート引数を使用してクラス テンプレートをインスタンス化する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-04 08:01:30425ブラウズ

How to Instantiate a Class Template with Default Template Arguments in C  ?

デフォルトのテンプレート引数を使用してクラス テンプレートをインスタンス化する際のデフォルトのテンプレート引数の指定

C 11 では、簡潔で便利な方法を提供するために、デフォルトのテンプレート引数が導入されました。クラス テンプレートをインスタンス化するときにテンプレート引数を指定します。ただし、デフォルトのテンプレート引数を使用してクラス テンプレートの引数を指定することは、混乱を招く可能性があります。

単に Foo me; などのクラス テンプレートのインスタンスを宣言するだけで十分だと期待する人もいるかもしれません。ただし、この場合、コンパイラはテンプレート引数を明示的に指定する必要があります。

デフォルトのテンプレート引数を使用してクラス テンプレートをインスタンス化する正しい方法は、テンプレート引数リストを空のままにすることです。つまり、コードは Foo me; ではなく Foo<> にする必要があります。自分;。これは、クラスのインスタンス化にデフォルトのテンプレート引数を使用する必要があることをコンパイラに示します。

この構文は、デフォルトの引数を使用して関数を呼び出すための規則と一致しています。たとえば、単一のデフォルト引数を持つ関数 foo は、引数を foo() として指定しなくても呼び出すことができます。ただし、引数の構文は引き続き存在する必要があります。

注: C 17 以降では、Foo me; のように、テンプレート引数を指定せずにクラス テンプレートのインスタンスを宣言することができます。 。この動作は、以前のバージョンの C からの逸脱であり、すべてのコンパイラでサポートされているわけではないため、注意して使用する必要があります。

以上がC でデフォルトのテンプレート引数を使用してクラス テンプレートをインスタンス化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。