C++命名空间


前言

这篇文章将主要介绍C++命名空间相关知识点

一、C++命名空间的意义

以我现在的理解,命名空间意义在于可以让不同的人使用同名的函数、变量和结构体,这一点在C语言中实现不了,在C语言中出现同名的函数的时候会报出链接错误,只能修改函数名字来解决这个问题。

二、C++命名空间的使用

在C++ 中我们可以这样定义命名空间

namespace  test{

	int a = 0;
	int Add(int x, int y) {
		return x + y;
	}
	struct list {
		int val;
		//
	};
}
struct list {
	int val;
	//
};

我们可以这样使用命名空间里面的东西。 test::Add(),如果命名空间全展开或者局部展开,我们就可以直接正常使用,不需要 test::这样用了。

int main() {
	int a = 9;
	int b = test::Add(2, 3);
	cout << "hello world" << endl;
	cout << b;
	return 0;
}

目前我了解的域分为三种:全局域、局部域和命名空间域名。 程序首先会去局部域寻找,找不到再去全局域,再找不到就去命名空间域名(如果命名空间域全部展开的话)。
这里命名空间全展开的方式是这样的:using namespace test; 这里的展开不是像头文件那样展开,而是类似于开放一个权限,让程序能从命名空间里面找东西。
当然除了全展开外,还有局部展开:using test::a; 这里局部展开可能会与全部变量起冲突。

三、命名空间的特性

1 命名空间嵌套

命名空间里面可以嵌套命名空间

namespace  test{
	namespace test1 {
		int a = 0;
		int Add(int x, int y) {
			return x + y;
		}
	}
	int a = 0;
	int Add(int x, int y) {
		return x + y;
	}
	struct list {
		int val;
		//
	};
}

2 同一命名空间在不同文件中的使用

下图展示了命名空间test在stack.h和test.cpp这两个文件中的使用,这里程序会自动将这两处test所包含的内容合并在一起。
在这里插入图片描述
在这里插入图片描述

总结

这是我目前对C++命名空间的理解,如果后续有新理解,我还会加进来的。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值