C 中“typedef”和“using”关键字都有助于创建类型别名。虽然它们的用途相似,但它们的实现存在细微的差异。
在 C 11 及更高版本中,“using”语法作为定义类型别名的简洁方法而出现。例如:
using MyInt = int;
这在语义上等同于传统的 'typedef':
typedef int MyInt;
但是,'using' 语法由于其表达“模板 typedef”的能力而变得流行":
template<class T> using MyType = AnotherType<T, MyAllocatorType>;
现在,让我们探讨一下 'typedef' 和 'using' 在别名方面的潜在差异 力量。 “typedef”以其“弱”别名行为而闻名,这意味着它不会创建新类型,而只是建立一个新名称。别名类型与其原始类型之间的转换是隐式的。
问题出现了:“使用”的行为是否相似,或者是否会导致创建新类型?根据 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中文网其他相关文章!