C++ 什么时候编译类目标文件?

标签 c++ class

我是 C++ 新手,很难理解类目标文件的创建和编译步骤。

假设我创建了 3 个文件:1. 类头文件 2. 类 cpp 文件(存在成员函数定义)3. 主 cpp 文件

/* 当我运行包含类头文件(如“#include class.h”)的主 cpp 文件时,类 cpp 文件何时被编译、目标文件创建和链接?

我遇到困难的原因是,从编译器的角度来看,当它看到主 cpp 文件时,只有头文件定义,没有成员函数定义。但是,即使在类头文件中,也没有包含类 cpp 文件。当类头文件和主 cpp 文件中都没有引用它时,编译器如何知道运行类 cpp 文件? */

让我澄清一下我的问题。 //也许我说了一些我什至听不懂的话,哈哈。

所以,基本上我是在尝试在一个名为“main.cpp”的文件中运行一个主要函数。此“main.cpp”文件包含“class.h” header (包括“class.h”)。当“class.h”中未声明成员函数时,编译器将如何执行头文件中定义的函数?我所有的成员函数声明都在“class.cpp”中,它不包含在“class.h”或“main.cpp”中。

最佳答案

我怀疑您使用的是 IDE,因为您提到运行 cpp 文件 - 编译器不知道如何运行任何东西。

您的 IDE 会为您管理这些依赖项。
当您按下“运行”时,IDE 将决定您的项目中哪些文件需要编译,编译完成后会将所有目标文件链接在一起。
如果编译和链接成功,IDE 将启动可执行程序。

如果您想更好地理解这些概念,请暂时离开您的 IDE,在命令行上完成所有编译和链接。
(这并不复杂,只是乏味。)

关于C++ 什么时候编译类目标文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28805653/

相关文章:

c++ - 这个编译器错误是由无效代码触发的,还是应该编译?

c++ - 尝试读取二进制文件 C++ 时出现问题

c++ - 矩阵中的运算符重载 : how to overload () and = at the same time

PHP 类 - 使用普通变量而不是属性更可取吗?

c++ - 命令行中缺少 DSO(使用 CMake)

c++ - 如何使用 gdb 调试带有递归 makefile 的代码库

c++ - 如何在 C++ 中编写内联相互抽象代码?

c++ - 这个指针的使用

c++ - 如何递归访问不同的类?

python - 在 Python 中一次为一个对象分配多个属性