Search code examples
c++oopnon-member-functions

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


What is the normal practice when it comes to non-member function in C++? Do we put them in main.cpp or header file or class implementation file, or do we make a separate .cpp file for it? If the normal practice is to make a separate file, then where do we put the non-member function header(prototype)? Does it only go in main.cpp or in both of them?


Solution

  • I would say you should not treat non-member functions differently to classes and member functions and other symbols.

    You should create a distinct header file .h and a corresponding source file .cpp for each logical component (module) of your application.

    All public symbols should be declared/defined in the header file (whether they be non-member functions or otherwise) and all non-public symbols and all required definitions should go in the source file.

    In short, group according to logical program components, rather than by the type of symbol/function.