一,命名空间
一个中大型软件往往又饿很多程序员共同完成,会使用大量的变量和函数,会产生变量或函数的冲突,为了解决合作开发时或者不同代码段之间的命名冲突,c++引入了命名空间(namespace)的概念
二,命名空间的使用
1.命名空间的定义
namespace 是c++中的关键字,用来定义一个命名空间,语法格式为
namespace name
{
//变量,函数 类等
}
name 是命名空间的名字,它里面可以包含变量,函数,类,typedef,#define等,由{}包围
namespace Li //小李的命名空间
{
FILE fp = NULL ;
}
namespace Wang //小王的命名空间
{
FILE fp = NULL ;
}
2,变量空间的使用
(1) 使用变量,函数时要指明他们所在的命名空间,如上所示
Li::fp = fopen(“add.txt”,“w”); // 使用小李定义的变量
Wang::fp = fopen(“sui.txt”,“w”); // 使用小王定义的变量
::是域解析操作符,在c++中用来指明要使用的命名空间
(2)除了::,还可以使用using声明
如上例
using Li ::fp
fp = fopen(“add.txt”,“w”) // 使用小李定义的变量
Wang::fp = fopen(“sui.txt”,“w”) // 使用小王定义的变量
其中using的作用是声明了Li::fp。后面如果出现没有声明的fp,即使小李的fp,小王的则需要声明
(3)using不仅可以声明一个命名空间的变量,还可以声明整个命名空间,如
using namespace Li ;
fp = fopen(“add.txt”,“w”) // 使用小李定义的变量
Wang::fp = fopen(“sui.txt”,“w”) // 使用小王定义的变量
如果Li的命名空间中还有其他变量,那么同样在没有声明其他变量的命名空间时,默认为小李命名空间中变量
三命名空间使用例子
#include
namespace NamespaceA
{
int a ;
int add(int a ,int b)
{
return a+b;
}
}
namespace NamespaceB
{
namespace NamespaceC
{
struct teacher
{
int add ;
char name[20];
};
}
int a ;
}
int add(int a,int b)
{
return a+b+10 ;
}
int main ()
{
int ret = NamespaceA::add(2,4);
printf ("ret=%d\n",ret);
}
int main ()
{
using namespace NamespaceA ;
int ret = NamespaceA :: add(2,3) ;
printf ("ret = %d",ret) ;
ret = ::add(2,3) ; //使用默认空间命名add
printf ("ret = %d",ret) ;
}
using namespace NamespaceA ;
a = 10 ;
printf (“a = %d\n”,NamespaceA::a);
(四)c++的标准语言库和std的命名空间
c++是在c语言的基础上开发的。因此很多都是通用的,但是c++也开发了一些新的库,增加的新的头文件
如iostream.h:用于控制输出输入的头文件
fstream.h:用于文件操作的头文件
complex.h :用于复数计算的头文件
当然c语言中的头文件还是可以使用如string.h ,stdlib.h,但是在c++中可以将后面的.h去掉,在前面加个c就可以使用了,简单方便
(五)c++的输入和输出
#include
using namespace std ;
int main ()
{
cout<<"hello world\n"<
cout<<“hello world\n”<
例
#include
using namespace std ;
int main ()
{
int x ;
int y ;
cout << "请输入x和y"<> x>> y ;
cout << “x等于”<