c++ - 使用 struct 关键字声明一个类,反之亦然

标签 c++ class struct declaration

当然,我们甚至不应该考虑做这样的事情,我知道,但这仍然很有趣:

class A; //declaration
struct A {...}; //definition

struct B; //declaration
class B {...}; //definition

当我考虑它时,如果真的允许这样的事情,我没有看到任何问题(因为结构和类本质上是同一件事)。但它是(标准的)吗?

MSVC 接受并编译它,但会发出警告。

最佳答案

根据标准它是允许的,但正如一些编译器警告的那样,它不是很有用。

我相信这个警告是/是由 MSVC 对结构和类使用不同的名称修饰引起的,这会使它变得更没用......


根据@Armen 的要求:

7.1.5.3 详尽的类型说明符,p3

... in any elaborated-type-specifier, the enum keyword shall be used to refer to an enumeration (7.2), the union class-key shall be used to refer to a union (clause 9), and either the class or struct class-key shall be used to refer to a class (clause 9), declared using the class or struct class-key.

关于c++ - 使用 struct 关键字声明一个类,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6485419/

相关文章:

javascript - 为什么不在类外部/顶部声明变量以避免使用此关键字?

java - 同一类中的类名变量不理解概念

c++ - 在不重建 C++ 的情况下更改常量变量

c++ - 调用函数传递数组

java - 错误 "java.lang.ClassNotFoundException"阻止我运行应用程序

pointers - 如果对象位于 slice 中,方法不会更改对象的值

c - 将参数(结构体数组中的结构体)传递给 C 中的函数

c - 将 C 或 C99 中的结构数组初始化为所有相同的值

c++ - Boost 序列化/反序列化存档 "stream error"异常

c++ - 在 boost-spirit 中解析嵌套数据