gpt4 book ai didi

c++ - 现有命名空间类型的使用声明与创建类型别名

转载 作者:行者123 更新时间:2023-12-02 04:46:59 25 4
gpt4 key购买 nike

这不是一个关于usingtypedef创建类型别名之间差异的问题。我想提供从代码块或函数内的命名空间对现有类型的访问。

我发现了两种不同的方法:

我可以使用 using 声明“包含”该类型:

using typename mynamespace::mytype;

或者我可以创建一个类型别名:

typedef mynamespace::mytype mytype;
using mytype = mynamespace::mytype; //C++11
  1. 有什么不同吗?
  2. 每种语法的优缺点是什么?
  3. 哪一个最常用/推荐?

谢谢。

相关问题:Using-declaration of an existing type from base class vs creating a type alias inside child class

最佳答案

Is there any difference ?

命名空间中名称的类型别名可以出现在类中

struct S { using mytype = mynamespace::mytype; };

而 using 声明可能不会。

What are the pros and cons of each syntax ?

如果您正在处理类范围,则前一点是一个相当大的骗局。

除此之外,这两种方法非常相似。别名是一个新名称,完全代表别名的类型。而 using 声明将类型的现有名称带入范围。如果您对两者都使用 mytype,您将不会注意到差异。

Which one is the most used/recommended ?

我怀疑对此是否达成共识。在必要时使用您必须使用的(类范围),但否则请遵守团队的风格指南。

关于c++ - 现有命名空间类型的使用声明与创建类型别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58448071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com