如果我在实现(.cpp)文件中定义了一个函数却未在头文件中定义该函数,会发生什么?

dev*_*nut 6 c++ function

我是C ++新手。我有一个foo.cpp文件,它定义了一个函数,

void sort() {
   // details of sort algorithm
}
Run Code Online (Sandbox Code Playgroud)

我没有在相应的头文件中定义它,但是没有编译错误。我注意到这被视为静态方法。是这样吗 我在这里到底做了什么?

编辑:

我注意到在此方法内部,我不能使用它(例如:this-> bar),因此我假设这是一个静态函数。当我想要一个“私有”方法,却忘了在头文件中声明它时,这实际上发生了。实际使用这种功能吗?

nur*_*tin 6

它在该编译单元之外不是不可见的,它不绑定到单个编译单元,它只是一个需要声明才能被调用的定义。像任何其他定义一样。

wf.cpp:

#include <iostream>
void f(){ std::cout<< "f();"; }
Run Code Online (Sandbox Code Playgroud)

omg.cpp:

void f(); // I can declare wherever I use it.
int main(){ f(); }
Run Code Online (Sandbox Code Playgroud)

$ g++ wtf.cpp omg.cpp && ./a.out

输出: f();