c++知识点总结--名称空间

//example:
namespace Jack{
	double fetch;//...变量
	double bucket(double n){ //...函数
		...
	}
	//...结构体...
	struct node{
	};
}
using Jack::fetch ; //-------下面就可以直接使用fetch。-------using声明--只能一个
using namespace Jack;//-----Jack里面的都可以使用。
Jack::fetch;// ------这样可以避免存在多个名称空间有相同名称的冲突。

如果名称空间(Jack)和全局(函数外)以及局部(函数内)都有同一个变量mi;则mi—局部变量; ::mi—全局变量; Jack::mi—名称空间变量。

namespace people{
	string name;
}
string name = "global";
int main()
{
	people::name = "space";
	{
		string name = "local";
		cout<<name<<endl;
		cout<<::name<<endl;
		cout<<people::name<<endl;
	}
//local
//global
//space
}

名称空间可以嵌套;

namespace people{
	string name;
	namespace man{
		int age;
		int sex;
	}
}
int main()
{
	people::name = "xxx";
	people::man::age = 14;
}

当使用using编译指令导入最外层名称空间时,其内部的using编译指令导入的名称空间也随之导入。

在函数类部存在和名称空间相同的变量名时,使用using编译指令,则函数内的局部变量将隐藏名称空间变量,或者全局变量(相同名),并使用解析符::可以调用 ;;如果使用using声明,则函数内局部变量将会和名称空间的变量冲突。

namespace people{
	string name;
}
string name = "global";
int main()
{
	using people::name;
	people::name = "space";
	cout<<name<<endl;
	{
		string name = "local";
		cout<<name<<endl;
		cout<<people::name<<ednl;
	}
}
//space
//local
//space
//可见局部变量覆盖了名称空间同名变量,但是名称空间变量还是存在的。
//名称空间可以改名
namespace newname = oldname;

普通名称空间的链接性是外部的,而匿名名称空间的链接性是内部的(只能在该文件下使用)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值