《C++》1.命名空间

命名冲突问题   变量名可能与库中变量名冲突,也在同一个工程中与其他人定义变量冲突   C++中引入命名空间概念   namespace     ::域作用限定符

#include
#include
#include

int a = 1;

namespace my   //命名空间中可以定义变量/函数/类型
{
	int rand = 0;

	int add(int a, int b)
	{
		return a + b;
	}

	struct s
	{
		int val;
	};

	namespace my_  //命名空间可以嵌套
	{
		int sub(int a, int b)
		{
			return a - b;
		}
	}

	namespace my_ //命名空间可以重复,相同名字的命名空间会被合并到一起
	{
		int min(int a, int b)
		{
			return std::min(a, b);
		}
	}
}


//命名空间三种使用方式
//1. 使用域作用限定符   隔离效果最好但是使用麻烦
//2. 使用using namespace 展开,使用方便但是隔离效果差
//3. 使用 域名::域内成员名 的形式将某个常用成员单独展开  ,保证了隔离效果的同时也使使用更加放便

int main()
{
	printf("%d\n", my::rand);
	int a = 2;
	printf("%d\n",a);
	printf("%d\n", ::a); //全局变量与局部变量冲突时,局部变量优先,可以使用全局域来输出全局变量
	std::cout << my::add(1, 2) << std::endl;

	my::s s1{};//  定义命名空间内类型
	 s1.val = 1;
	 std::cout << s1.val << std::endl;

	 std::cout << my::my_::sub(10, 5) << std::endl;
	 std::cout << my::my_::min(10, 6) << std::endl;
	return 0;
}

你可能感兴趣的:(C++,c++,笔记)