C++的名字空间

C++的名字空间

	名字空间主要用于解决名字冲突的问题,应用程序可能会调用多个库程序,不同的库程序可能会存在相同
的全局变量名,全局函数名,类名等。库程序的作者为了避免其他程序中名字或者用户自己定义的名字冲突,
将库程序中的所有名字放在一个特定的名字空间下。这样一个标识符可以在不同的名字空间使用,提高标识
符的利用率。

一、名字空间的引入

namespace 空间名{
	成员;
}

二、名字空间的用法

前缀用法:	空间名::成员		<==>	spaceName::member 
后缀用法:	using namespace 空间名;
			c成员变量的引用;

例如:
namespace A{
	int a = 10;
}/*定义一个名字空间A,有一个成员变量a*/
/*此时如果想要引用成员变量a有两种方式*/

前缀用法:printf("%d\n", A::a);
后缀用法:using namespace A;
		 printf("%d\n", a);

在这里插入图片描述
三、名字空间的分类

1、自定义名字空间

	如果自己编写库程序并且用自己定义的名字空间,则无论是在.cpp的源程序中编写库函数还是在.h的头文
件中对库函数进行声明,则都需要在指定的名字空间下进行。
用法:
namespace 名字空间{
	名字空间的定义或者声明;
}

例如:
"mylib.cpp"文件						
#include <iostream>
using namespace std;
namespace WH{
	void f(){
		cout << "WH::f()" << endl;
	}
	void g(){
		cout << "WH::g()" << endl;
	}
}//在名字空间中定义函数

"mylib.h"文件
#ifndef _MYLIB_H_
#define _MYLIB_H_ 
namespace WH{
	void f();
	void g();
}
#endif 
//在名字空间中声明函数

2、无名名字空间

	如果定义某个名字时,没有纳入某个指定的名字空间,则默认放在无名名字空间下。
using namespace std;
#include <iostream>
#include "mylib.h"
using namespace WH;//自定义名字空间的using名字声明 

void f(){
	cout << "::f()" << endl;
}//全局函数,无名名字空间定义的函数  

int main()
{
	::f();//调用无名名字空间的f()函数
	WH::f();//调用WH名字空间的函数
	//f();//错误用法,有冲突。
	g();//调用名字空间WH下的函数,此处对名字空间进行了声明,而且没有名字冲突。
	return 0;
}

四、名字空间的嵌套

#include <cstdio>
#include <cstdlib>
namespace A{
	int a = 10;
	namespace B{
		int b = 20;
	}
}
using namespace A;
using namespace B;
int main()
{
	printf("%d\n", A::B::b);
	printf("%d\n", B::b);
	printf("%d\n", b);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值