ホームページ >バックエンド開発 >C++ >C の型別名の `typedef` と `using` キーワードの違いは何ですか?

C の型別名の `typedef` と `using` キーワードの違いは何ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-21 04:53:13568ブラウズ

What's the Difference Between C  's `typedef` and `using` Keywords for Type Aliases?

C の 'typedef' と 'using' の違いは何ですか?

C 11 では、'using' キーワードは次のようになります。従来の「typedef」キーワードと同様の型エイリアスを作成するために使用されます。どちらの構文でも、既存の型に新しい名前を割り当てるという同じ結果が得られますが、セマンティクスには考慮すべき微妙な違いがあります。

「using」は「typedef」と同等ですか?

C 標準 (7.1.3.2) によれば、「using」により、同一のセマンティクスを持つ typedef-name が導入されます。 「typedef」を使用して定義されているかのように。これは、「using」では新しい型が作成されるのではなく、既存の型に代替名が提供されることを意味します。これらの名前間の変換は暗黙的です。

セマンティクスの違い

構文とセマンティクスは似ていますが、「using」キーワードは次の点で「typedef」と異なります。

  • 弱いAliasing: 'typedef' は「弱い」エイリアスを作成します。これは、元の型を再定義しないことを意味します。一方、'using' は弱いエイリアスの作成には使用できません。
  • テンプレート タイプ エイリアス: 'using' はテンプレート タイプ エイリアスの作成に使用できますが、'typedef' は使用できません。 。例:
template<typename T>
using MyType = AnotherType<T, MyAllocatorType>;

以上がC の型別名の `typedef` と `using` キーワードの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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