使用现有类型vs创建别名

问题描述 投票:2回答:1

这不是关于usingtypedef语句之间的区别的问题。我想提供从代码块或函数内部的名称空间访问现有类型的权限。我发现了两种不同的方式:

我可以“包括”类型:

using typename mynamespace::mytype;

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

typedef mynamespace::mytype mytype;
using mytype = mynamespace::mytype; //C++11
  1. 有什么区别吗?
  2. 每种语法的优缺点是什么?
  3. 哪个是最常用/推荐的?
c++ typedef using
1个回答
1
投票

有什么区别吗?

类型别名可以出现在班级中

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

虽然可能没有使用声明。

每种语法的优缺点是什么?

如果要处理类范围,上一点是很大的缺点。

除了这两种方法非常相似。别名是一个新名称,完全代表别名的类型。虽然using声明将类型的现有名称纳入范围。如果同时使用mytype,则不会有任何区别。

哪个是最常用/推荐的?

我怀疑是否对此达成共识。在必须使用时,使用必需的内容(类作用域),否则,请遵循团队的风格指南。

© www.soinside.com 2019 - 2024. All rights reserved.