ホームページ >バックエンド開発 >C++ >C の型エイリアスの「typedef」と「using」の主な違いは何ですか?

C の型エイリアスの「typedef」と「using」の主な違いは何ですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-25 20:27:09534ブラウズ

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

C の 'typedef' と 'using' のニュアンスを理解する

C の 'typedef' と 'using' キーワードはどちらも型エイリアスの作成を容易にします。これらは同様の目的を果たしますが、実装には微妙な違いが存在します。

C 11 以降では、型エイリアスを定義する簡潔な方法として 'using' 構文が登場しました。例:

using MyInt = int;

これは、従来の 'typedef' と意味的に同等です:

typedef int MyInt;

ただし、「テンプレート typedef」を表現できるため、「using」構文が普及しました。 ":

template<class T> using MyType = AnotherType<T, MyAllocatorType>;

ここで、「typedef」と「typedef」の潜在的な違いを調べてみましょう。エイリアスの強さに関する「使用」。 「typedef」は「弱い」エイリアス動作で知られています。つまり、新しい型を作成するのではなく、単に新しい名前を確立するだけです。エイリアスされた型とその元の型の間の変換は暗黙的です。

疑問が生じます:「using」は同様に動作するのでしょうか、それとも新しい型が作成されるのでしょうか? C 標準 (7.1.3.2) によると、答えは、セマンティクスにおいて同等であるということです。

"It [using] has the same semantics as if it were introduced by the typedef specifier. In particular, it does not define a new type and it shall not appear in the type-id."

したがって、'typedef' と 'using' は両方とも、新しい型を生成せずに弱いエイリアスを作成します。エイリアスされた型と元の型の間の暗黙的な変換。

以上がC の型エイリアスの「typedef」と「using」の主な違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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