我在外部 *.cpp 文件中定义了一些函数(这里不涉及类),当然还有一个合适的 *.h 文件。
使用了*.cpp文件中的一些函数only在该 *.cpp 文件中没有其他地方。它们甚至没有在 *.h 文件中提及。
我应该将这些函数放入未命名的命名空间中,还是可以将它们放在其他函数旁边?如果是这样,为什么我需要为它们提供一个未命名的名称空间?我看不出有什么问题,因为无论如何都无法从外部访问这些功能。
如果您希望它们对于该编译单元来说是真正私有的,请将它们放在匿名名称空间中。如果您不这样做,那么有人可以在其他地方声明这些函数并显式使用它们。
举个例子:
library.cpp
:
// a "private" function here, in that it is not declared anywhere
void f() {}
namespace
{
// same as above, except within an anonymous namespace
void g() {}
}
client.cpp
:
void f();
int main()
{
// Can call f(), it's been declared and is now effectively "public"
f();
// compilation error, this has no idea what g() is, it's not declared
// in any scope that can be resolved here
g();
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)