C の戻り値の型と関数のシグネチャ
C では、関数の戻り値の型は、通常の関数のシグネチャの一部とはみなされません。 、関数テンプレートの特殊化ではない関数を意味します。これは、同じ名前とパラメータの型を持つ関数は、戻り値の型が異なる場合でもオーバーロードできることを意味します。
関数テンプレートの特殊化の署名
ただし、関数の場合テンプレートの特殊化では、戻り値の型が署名に含まれます。これは、関数テンプレートの特殊化の署名には、テンプレート自体の署名に加え、その戻り値の型とテンプレート パラメーターのリストも含まれるためです。
関数の署名の一部ではないのはなぜですか?
戻り値の型が通常の関数の関数シグネチャの一部とみなされない理由は、C 標準では明示されていません。ただし、これは、関数のオーバーロードが主に関数の識別子とパラメーターの型に基づいているためであると推測できます。
オーバーロードが無効な場合
にもかかわらず戻り値の型がシグネチャの一部ではないため、標準では異なる戻り値の型で関数をオーバーロードすることは禁止されています。これは、次のコードは現在の主要なコンパイラではコンパイル エラーになることを意味します。
int f(); double f(); // invalid
結論
C では、戻り値の型は通常の関数のシグネチャですが、関数テンプレートの特殊化のシグネチャに含まれます。この区別は、関数をオーバーロードする場合や関数テンプレートを使用する場合に理解することが重要です。
以上が戻り値の型は C 関数シグネチャの一部ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。