首页 > 后端开发 > C++ > C 中类型别名的'typedef”和'using”之间的主要区别是什么?

C 中类型别名的'typedef”和'using”之间的主要区别是什么?

Barbara Streisand
发布: 2024-12-25 20:27:09
原创
554 人浏览过

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;
登录后复制

但是,'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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板