C++ 怎么可能?当源代码中有未定义的函数时编译?

发布于 2024-12-07 19:34:25 字数 161 浏览 3 评论 0原文

好吧,这可能是一个奇怪的问题。事情是这样的,在重载的operator=中,我使用了一个clear()助手;但由于某种原因,我实际实现的是clear(Node *curr)而不是clear(),所以整个源代码中没有名为clear()的函数。然而这编译得很好。我的问题是为什么?它甚至没有向我发出警告:|提前致谢

Ok this might be a weird question.. Here's the thing, in the overloaded operator=, I used a clear() helper; But for some reason what I actually implemented was clear(Node *curr) instead of clear(), so there is no function named clear() in the entire source code. However this just compiles fine. My question is why? It didn't even throw me a warning :| Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦过后 2024-12-14 19:34:25

这可能是一个编译器错误,但更可能的是您只是忘记了您实现了这样的函数,或者编译器在一个令人惊讶的地方找到了一个函数。如果您有 IDE,则可以尝试使用“转到定义”和“转到声明”等工具来尝试查找您调用的函数的定义。

It could be a compiler error, but what's more likely is that you simply forgot that you implemented such a function or the compiler has found one in a surprising place. If you have an IDE, you can attempt to use tools like Go To Definition and Go To Declaration to attempt to find the definition of the function you called.

半世蒼涼 2024-12-14 19:34:25

我看到两种可能性:

  1. 你的编译器没有链接应用程序中的operator=方法,因为它从未被使用过,所以它调用的任何缺失的函数都无关紧要

  2. 如果使用了operator=并且它有效,那么你就犯了一个错误,定义了一个clear()方法。只需使用源代码调试器验证代码的位置即可。

I see two possibilities:

  1. your compiler is not linking the operator= method in your app because it is never used, so any missing functions called by it do not matter

  2. if operator= is used and it works, then you made a mistake, there is a clear() method defined. Just verify where the code goes with a source code debugger.

倾城°AllureLove 2024-12-14 19:34:25

简单:它找到了一个也可以链接的clear()版本。

只是因为你没有看到它没有任何意义。
它编译正确,因为:

  1. 有一个带有clear() 函数声明的头文件
  2. 您正在链接具有该函数实现的库。

简单明了。如果编译它就在那里。

Easy: It found a version of clear() that it can link too.

Just because you don't see it means nothing.
It compiled correctly because:

  1. There is a header file with a function declaration of clear()
  2. You are linking against a library with the implementation of the function.

Plain and simple. If it compiled it is there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文