c++ - 将同一 header 中定义的类的定义拆分到多个源文件中是否合法?

标签 c++

在 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/

相关文章:

c++ - 如何通过引用 O(1) 在 C++ 中复制 vector ?

c++ - Boost.PropertyTree子路径处理

c++ - 基类中的模板化类成员,不存在于派生类中

C++ BOOST undefined reference `boost::filesystem::detail::copy_file

c++ - 使用动态参数创建线程

c++ - C++中的 “inline”关键字

c++ - 使用popen提取系统命令的输出

c++ - 无堆栈 C++20 协程有问题吗?

c++ - 流迭代器的重用

c++ - 不同的值取决于 C++ 类型