在 C++ 中,我们将非成员函数放在哪个文件中?

In which file do we put non-member function in C++?

C++中非成员函数的一般做法是什么?我们是将它们放在 main.cpp 或头文件或 class 实现文件中,还是为它制作一个单独的 .cpp 文件? 如果通常的做法是单独制作一个文件,那么我们把非成员函数头(prototype)放在哪里呢?它只进入 main.cpp 还是两者都进入?

您的 class 应该有自己的 .cpp 文件。非成员函数应该放在其他文件中(全部放在一起或根据相似性分组)。这是北美的惯例,但惯例不同。原型只需要进入头文件,这样你就可以在任何地方使用它。

我会说您不应该将非成员函数与 类 和成员函数以及其他符号区别对待。

您应该为每个 您的应用程序的逻辑组件(模块)。

所有public符号在头文件中应该是declared/defined(无论它们是非成员函数还是其他)和所有非public 符号和所有必需的定义应该放在 源文件 .

简而言之,根据逻辑程序组件进行分组,而不是根据 symbol/function 的类型分组。

伪代码的总体思路:

if (it will be used in other cpp files) 
    put the declaration in a header file. 
    implement it in a header or a cpp file.
else 
    if (only need it in some functions in a header file)
        if (it's a function more than N line )  // please define this N in your mind
            declare it in the same header and implement it in a cpp file
        else
             put it in the same header file
    else // used in cpp only
        put it in the cpp file

只要编译通过,就应该考虑readability(任何人都容易阅读)和accessibility(任何人都容易找到和调试)。