Typedef的匿名类

时间:2016-07-18 21:00:45

标签: c++ c++11

以下两个定义之间的任何方面(句法限制,性能等)是否有任何差异?

using Foo = struct { int a, b, c; };

struct Foo { int a, b, c; };

(我问,因为第一种形式在许多using声明中放在美学上更均匀。)

编辑:评论中链接的帖子并未完全回答我的问题。我更关注上述两个定义在用法方面的不同之处,而该帖子主要回答了它们在我们认为的方面是什么不同,以及它们是什么。

1 个答案:

答案 0 :(得分:13)

以下是我能想到的一些差异:

  • (显而易见)您不能为未命名的类声明任何构造函数,析构函数或赋值运算符。
  • 您无法转发声明未命名的类,包括作为另一个类的朋友。
  • 您无法标记未命名的班级final
  • struct Foo可以在与名为Foo的函数或变量相同的声明区域中声明,但显然,您不应该这样做。 using Foo = ...不允许你这种自由。