1、头文件名
.h作为头文件(header)的后缀名,只是习惯而非规定。对于C++的标准库,它的前身是带.h的,内容上最大的区别是文件名不包含.h的头文件中使用了命名空间std,以防止命名空间污染。
2、命名空间
1、定义及作用
命名空间实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。
2、定义规则
在命名空间中可以包括
- 变量(可以初始化)
- 常量
- 函数(定义或声明)
- 结构体
- 类
- 模板
- 命名空间(嵌套定义,也可以引用其他命名空间)
命名空间可以是全局的,也可以位于另一个命名空间,但不能位于代码块中,命名空间是开放的,即可以把名称添加到现有的命名空间中
3、使用规则
using声明和using编译指令
using声明由限定的名称和它前面的关键字using组成,使特定标识符。using声明将特定名称添加到它所属声明区域中
//namespace_test.h文件
namespace test_namespace
{
int fetch;
}
//namespace_test.cpp文件
#include<iostream>
int fetch;
int main()
{
using namespace std;
//using声明,相当于在main函数中声明了fetch变量,不可再声明相同名称的变量
using test_namespace::fetch;
//非法
//int fetch;
cin>>fetch;//输入test_namespace::fetch,屏蔽全局变量
}
using编译指令由命名空间名和它前面的关键字using namespace组成,使得整个所有名称可用
//namespace_test.h文件
namespace test_namespace
{
int i;
}
//namespace_test.cpp文件
#include"namespace_test.h"
using namespace test_namespace;
int _tmain(int argc, _TCHAR* argv[])
{
i = 0;
cout << "hello world!" <<i<< endl;
system("pause");
return 0;
}
另:如果要让命名空间中的变量在其他文件中使用,需进行如下定义
//namespace_test.h文件
namespace test_namespace
{
extern int i;//声明全局变量
}
//namespace_test.cpp文件
#include"namespace_test.h"
namespace test_namespace
{
int i;//定义全局变量
}