第一个定义了一个名为x1的类。第二个定义了一个未命名的类,并将类型别名定义为x2。在C++中,这两者之间的区别非常微妙。您可以通过尝试声明相同名称的函数来观察差异:void x1(); // OK void x2(); // not OK, redefined as a different type of symbol 实际上,您应该避免在相同命名空间内使用与类相同的名称定义函数,因此这种区别很少出现。第一种通常更受欢迎,因为它更简单。在 C 中,这个差异会对标识符的使用造成更大的影响。