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 サイトの他の関連記事を参照してください。