有时候,为了能够实现执行隐藏,你会使用匿名的命名空间:以命名空间编写的所有数据和函数都不可访问,除非通过一些可编译的源文件,所以你将不能随便访问:
// test.h
#ifndef TEST_H
#define TEST_H
class CTest
{
public:
/* interface accessible to clients
*/
private:
/* hidden details */
};
#endif // TEST_H
// End of test.h
// test.cpp
#include <test.h>
namespace
{
/* code and/ or data; not available
outside test.cpp */
};
/* implementation of CTest class; will contain
code that uses code/ data from the anonymous namespace */
在面象对象程序设计中,你可以使用以上的方法,但是在其他的更普通的程序设计中你不能使用这一方法。
假设你开发一个普通的函数f(),这一函数在内部上调用了另一个普通函数g()。你不能将g()函数暴露于程序之中,因为g()函数详细说明了执行的细节,它不应该被用户所查看。