Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ CPP或H中的助手_C++_Design Patterns - Fatal编程技术网

C++ CPP或H中的助手

C++ CPP或H中的助手,c++,design-patterns,C++,Design Patterns,假设我有一个助手: namespace test { void doSomething() { // Do stuff } } 我是否应该将该代码放在.cpp文件或.h文件中,这样我就可以#包含它?如果一个声明需要由多个文件查看,请将其放在标题中。如果只需要在一个文件中声明,请将其放在该文件中(可能放在匿名名称空间中,以减少名称冲突的可能性) 函数定义通常不会出现在头文件中,除非您想让编译器有机会内联它。头文件放得越少,程序员使用该文件所需的精神开销就

假设我有一个助手:

namespace test
{
    void doSomething() 
    {
        // Do stuff
    }
}

我是否应该将该代码放在.cpp文件或.h文件中,这样我就可以#包含它?

如果一个声明需要由多个文件查看,请将其放在标题中。如果只需要在一个文件中声明,请将其放在该文件中(可能放在匿名名称空间中,以减少名称冲突的可能性)


函数定义通常不会出现在头文件中,除非您想让编译器有机会内联它。头文件放得越少,程序员使用该文件所需的精神开销就越小(类似于编译器,但我更同情程序员)。

完全取决于此。一个小小的函数,像一个简单的一行数学,不太可能改变,我可能会做
inline
,并保留在标题中(inline非常重要。请参阅)。我将在CPP文件中实现任何复杂的或易于更改的内容。我对这个问题有点误解,只讨论了函数。假设这个助手将被多个用户使用,我将在标题中声明(可能是define——请参见注释1)。如果只有一个翻译单元使用helper,它将与使用helper的其余代码一起放入cpp文件中。对于helper函数,我该怎么做?我是否将其放入CPP文件中?头文件?cpp文件中的匿名名称空间?@BiBi不认为是“helper”。函数是否需要在多个文件中?是的,函数是。@BiBi那么函数的声明需要被多个文件看到。看看我的答案。至于定义,只有当您希望它是内联的时,多个文件才需要看到它。