gpt4 book ai didi

c++ - 在类中声明但未定义的方法

转载 作者:可可西里 更新时间:2023-11-01 15:50:18 25 4
gpt4 key购买 nike

我有一个类,它声明了一个方法但没有实现它。该方法不是虚函数。在对应的cpp文件中我没有找到相同方法的定义。类中声明的所有其他方法均已定义。

我编译了代码,一切顺利。我的印象是 cpp 必须强制定义声明的方法。

如果有人可以详细说明,我将不胜感激。我正在使用 VS2010 的 cl 编译器。

最佳答案

您的代码可以编译,但会出现链接错误。

构建项目的可执行文件包括两个阶段:

  • 编译
  • 链接

编译期间,编译器只是通过验证语言语义将源代码翻译成目标代码。
链接 期间,链接器实际上查找符号的定义并从多个目标文件(在编译期间创建)创建可执行文件。

编译器分别编译每个翻译单元(.cpp + 头文件)中的源代码,因此它假定定义应该存在于其他某个源文件中。链接器试图找到对函数定义的引用,因此链接器将报告缺少的定义。

请注意,链接器只需要链接您的程序使用的那些符号,
例如:如果您的程序声明了一个函数,但没有提供任何定义,而且从不在任何地方使用/调用该函数,链接器就不需要嵌入用于跳转到目标代码所在地址的代码函数驻留在任何函数调用站点。
在这种情况下,链接器根本不需要查找函数定义。因此代码将编译和链接。

关于c++ - 在类中声明但未定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9209994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com