我是 C++ 新手。我对 C++ 中的多个定义错误有一些疑问。
假设我在一个程序中有 3 个文件。1 个头文件和 2 个 .cpp 文件。我在两个 .cpp 文件中都包含了头文件。
- 我在头文件中声明了一个类,并以完全相同的方式在每个 .cpp 文件中定义了该类。那么这种类型的实现会不会导致多重定义错误呢?如果是这样,是因为它有两个类定义副本并且编译器不知道在链接两个 .o 文件期间要采用哪一个?
我们可以通过extern
在头文件中使用并仅在其中一个文件中定义类来解决这个问题吗?如果我们可以通过使用这种方法解决问题,我们是否必须将.cpp(带有类定义)包含到其他.cpp文件中(没有类定义)?
我已经在头文件中声明并定义了一个类。这种情况是否与上述相同(在1中提到)?
我在头文件中声明了一个类,并在每个 .cpp 文件中定义了该类,但定义(函数体)不同。那么这种类型的实现会导致多重定义错误吗?如果是这样,我们如何解决 .cpp 文件中函数主体不同的问题?