在 C++ 中,是否允许将同一个头文件中定义的类的定义拆分到多个源文件中?例如,如果我有一个定义类 Quad2 和 Quad3 的文件,我是否可以在名为 Quad2.cpp 的文件中定义类 Quad2,在名为 Quad3.cpp 的文件中定义类 Quad 3,但仍然在同一个头文件 Quad.h 中定义这两个类?
这会被认为是非法的吗?
最佳答案
是的,您可以在不同的实现文件中实现同一个头文件中的不同类。
头文件只不过是在编译时注入(inject)到源代码中的文本内容。正确的编译器完全没有 header 的概念。在编译器看到任何内容之前, header 在预处理器中解析。
因此,对于类的定义和实现所在的文件根本没有要求。关于什么属于头文件和什么属于实现文件的规范与最佳实践有关,与编译器强制执行的规则无关。也就是说,您将类定义放在 header 中,因为这样可以很容易地将它们注入(inject)到该类的实现和任何想要使用该类的代码中。
关于c++ - 将同一 header 中定义的类的定义拆分到多个源文件中是否合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17273056/