1.namespace的意义--避免命名冲突

变量、函数和类的名称可能会造成冲突(名称相同)

命名空间namespace_命名空间

这时用到namespace将名称进行本地化:定义出一个域

命名空间namespace_命名空间_02

而不同的域可以有相同的变量。从此避免命名冲突。

命名空间namespace_命名空间_03

2.namespace的定义

2.1 namespace只能定义在全局

2.2 可嵌套定义

namespace可以避免变量、函数和类的名称相同,可是如果namespace名称出现相同时怎么办呢?嵌套使用。

命名空间namespace_命名空间_04

2.3项目各个文件中的同名namespace都会在编译阶段被合并为一个namespace,不冲突

2.4 C++标准库都放在⼀个叫std(standard)的命名空间中。

3.namespace的使用

3.1 指定命名空间访问,做项目中推荐这种方式。 

#include<stdio.h>
namespace xy {
	int scanf = 1;
}

int main() {
	printf("%d", xy::scanf);
	return 0;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

3.2 using将命名空间中某个成员展开,项目中经常访问的不存在冲突的成员推荐这种方式。

#include<stdio.h>
namespace xy {
	int a = 1;
}
using xy::a;
int main() {
	printf("%d", a);

	return 0;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

3.3 展开命名空间中全部成员,项目不推荐,名称数量多,因此更容易与其他名称冲突,日常小练习程序为了方便推荐使用。

#include<stdio.h>
namespace xy {
	int a = 1;
}
using namespace xy;
int main() {
	printf("%d", a);

	return 0;
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

有人在这里又会疑惑为什么后面两种使用不用之前scanf的例子,因为此场景用不了

命名空间namespace_命名空间_05

命名空间namespace_命名空间_06

后者同上图理。