匿名类的Typedef

Typedef of anonymous class

本文关键字:Typedef      更新时间:2023-10-16

以下两个定义在任何方面(语法限制、性能等)有区别吗?

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

(我之所以这么问,是因为当把第一种形式放在很多using声明中时,在美学上更统一。)

编辑:评论中链接到的帖子并不能完全回答我的问题。我更关心的是上面两个定义在用法方面的差异,而那篇文章主要回答了它们在什么方面的差异。

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

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