C++初阶语法——命名空间

前言:C++,即cplusplus,顾名思义,是C语言promax版本,C++兼容C语言。
C++的诞生是因为贝尔实验室的本贾尼等大佬认为C语言的语法坑实在太多,拥有许多不足之处(比如命名冲突,),在长期的使用后感觉多有不便,因此发明了C++,以弥补填上这些语法坑。

目录

  • 命名空间
    • 1.命名空间与域作用限定符::
    • 2.展开命名空间
    • 3.套娃

命名空间

在了解命名空间前,博主先提出一个小问题:我们常常在C++的文件开头包using namespace std;,那么你知道这句话的作用是什么吗? (下文黄底片段)

C语言中存在着命名冲突的问题,假如未来你和你的同事合作负责一个项目,当你们各自负责的库链接起来后就可能出现命名冲突问题,比如你们声明定义了同名的变量,在C语言中,这种时候只能你们之中有一人做出让步,将所有该变量改成别名。C++的命名空间就是为解决这种情况而诞生的。

1.命名空间与域作用限定符::

namespace example  
{
	//命名空间中可以定义变量/函数/类。
	int a = 0;
	int Add(int x,int y){
		return x+y;
	}
}
int main()
{
	//可以将命名空间想象成一个围墙,围墙里面的东西必须要有权限才能访问。
	//cout << a << endl; 实操后发现并不能打印出a的值
	cout << example::a << endl; //域作用限定符::  借助该符号可以访问命名空间里的数据。
	return 0;
}

2.展开命名空间

一.部分展开(授权)

假如我们需要经常使用上面创建的命名空间里的Add函数,但是每次都使用域作用限定符又显得特别繁琐。这是我们就可以展开部分命名空间。
格式为:using example::Add;

namespace example
{
	int a = 0;
	int Add(int x,int y){
		return x+y;
	}
}
using example::Add;   //展开部分命名空间
int main()
{
	cout << Add(1,2) << endl; //这里并没有运用与操作限定符,却也可以使用命名空间里的Add函数。
	return 0;
}

二.全部展开

形式:using namespace example;
std是C++标准库的命名空间,using namespace std;就是全部展开C++标准库,如果没有展开std,那么cout,cin等语法都无法使用

namespace example
{
	int a = 0;
	int Add(int x, int y) {
		return x + y;
	}
}
using namespace example;  //全部展开命名空间
int main()
{
	//不用域作用限定符也可访问example里的变量,函数
	cout << a << endl;
	cout << Add(1, 2) << endl;
	return 0;
}

3.套娃

命名空间里可以嵌套使用命名空间,不过一般不会这么使用,但是偶然看到后也不要惊奇。

namespace example
{
	int a = 0;
	namespace instance
	{
		int a = 1;
	}

int main()
{
	cout << example::a << endl;  // 0
	cout << example::instance::a << endl; // 1
	return 0;
}

总结:综上,命名空间的使用共有3种方式。
今后若是想定义两个甚至多个同名的变量,可以将它们放在不同的命名空间中。
使用好命名空间,会让你在以后的练习和工作中减少许多不必要的麻烦。

文末BB:对哪里有问题的朋友,尽管在评论区留言,若哪里写的有问题,也欢迎朋友们在评论区指出,博主看到后会第一时间确定修改。最后,制作不易,如果对朋友们有帮助的话,希望能动动你们发财的小手给点点赞和关注.
C++初阶语法——命名空间_第1张图片

你可能感兴趣的:(C++基础语法,c++,开发语言,c语言)