Tah*_*lil 2 c++ oop static include
我有一个头文件,我想包含在另一个cpp文件中.我想知道如果我写这样的头文件有什么区别,
#include <iostream>
#include <string>
using namespace std;
string ret()
{
return "called";
}
Run Code Online (Sandbox Code Playgroud)
===================================
#include <iostream>
#include <string>
using namespace std;
static string ret()
{
return "called";
}
Run Code Online (Sandbox Code Playgroud)
ret()无论如何我都可以访问这个功能!那么,静态的用途是什么?
这是一个非常邪恶的头文件,你正在展示.
永远不要放入using namespace std;头文件.这会强制包括标头在内的任何人拥有std全局命名空间中的所有内容.
使用某种形式的包含警卫.
static使函数.cpp在包含它的位置之外不可见.这意味着.cpp包含标题的每个都将拥有自己的函数副本.static(非成员)函数只应在您特别需要此行为时使用.
如果你不使用static,你应该将标题中的定义移动到源文件中(如果你想要定义一次),或者声明函数inline(如果可能的话,它的代码将在每个调用站点上内联).如果不同时执行这些操作,如果将标头包含在多个源文件中,则会出现多个定义错误.