【发布时间】:2018-07-11 13:31:45
【问题描述】:
在 C++ 中,有一个命名结构在语义上是否等效
struct S { int x; };
对比未命名结构的类型别名
using S = struct { int x; }
?
使用第一个或第二个版本的 S 有什么不同,或者这些变体完全可以互换吗?还是很有可能某些编译器与第二个版本有问题?
【问题讨论】:
-
好吧,你不能有一个标题与第一个标题和另一个标题与第二个标题。而且你不能给第二个构造函数或析构函数
-
@M.M - 你确定 c'tor 和 d'tor 吗? IIRC,能够命名类就足够了。只是更难说清楚。编辑:NVM,
S不能用于命名类型coliru.stacked-crooked.com/a/3e9564b0009f5b04 -
@StoryTeller:你如何用未命名的结构做相当于
struct S { S() { std::cout << "C";} ~S() {std::cout << "D";} };的操作? C++ 没有将构造函数命名为self或类似名称。 -
@StoryTeller: 我们不能使用别名来定义构造函数/析构函数Demo。
标签: c++ struct compiler-errors