C++ 基础


………………………………………………………………………………

命名空间:

C语言环境中,当变量或函数发生冲突的时候,编译器会报错。在一些大工程中不同的板块往往由不同的人员进行编写,合并到一块时可能会出现名字冲突,因此C++在C的基础上引入了命名空间的概念,生成出一块块独立的作用域来避免冲突。

局部变量和全局变量:
为了更好地讲述命名空间,先来复习一下局部变量和全局变量

int a=0;
void test(){
   
	int a=1;
	printf("%d",a);
}
int main(){
   
	test();
}

运行上面的代码,输出结果时1
原因是因为a=0属于全局域,而a=1属于局部域,在调用的时候编译器会先选择去局部域寻找目标,再去全局域寻找(局部优先原则

那么如果我不想要输出1,想要直接去打印全局域中0,要怎么做呢?
C++中提供了一种操作符号 ::,用来指定被访问的作用域,左值为作用域,右值为变量名。当左值为空是,默认从全局中访问。

int a=0;
void test(){
   
	int a=1;
	printf("%d",::a); //输出0
}
int main(){
   
	test();
}

namespace关键字:
C++中提供namespace关键字方便程序员自定义作用域,如图所示

namespace N
{
   
	int a=0;
	int b=0;
}    //不用加分号
namespace M
{
   
	int a=0;
	int b=0;
}

定义了一个名为N的作用域和一个名为M的作用,它们分别放有各自的局部变量a,b,虽然变量名相同,但由于作用域不同,并不会发生冲突

不仅仅是可以指定变量的作用域,也可以指定函数的作用域,此外命名空间是可以嵌套使用的,如图所示↓

namespace N
{
   
	double add(int a, int b) {
   
		return a + b;
	}
}
namespace M
{
   
	float add(int a, int b) {
   x,y
		return a + b;
	}
	namespace K
	{
   
		int add(int a, int b) {
   
			
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tsunami——

你的鼓励将是我前进的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值