当前位置:   article > 正文

【深入理解C++】命名空间_c++命名空间重复使用吗

c++命名空间重复使用吗

命名空间就是为了防止名字冲突而引入的一种机制。

(1) 系统中可以定义多个命名空间,每个命名空间都有自己的名字,不可以同名。

(2) 命名空间不影响内存布局。

(3) 我们可以把命名空间看成一个作用域。我们在这个命名空间里定义的函数跟另外一个命名空间里定义的函数,即便同名也互不影响。

(4) 命名空间的定义可以不连续,甚至可以写在多个文件中。

  • 如果之前没有定义这个命名空间,那么 namespace 命名空间名 这种写法就相当于定义了一个新的命名空间。

  • 如果之前已经定义了这个命名空间,那么 namespace 命名空间名 这种写法就相当于打开已经存在的命名空间并为其添加新成员的声明。

外界如何访问某个命名空间中的函数呢?

格式:命名空间名::实体名,其中 :: 叫作用域运算符。

#include <iostream>
using namespace std;

namespace qdu
{
	int g_age;

	void func()
	{
		cout << "qdu::func()" << endl;
	}

	class Person
	{
		int m_age;
		int m_money;
	};
}

void func()
{
	cout << "func()" << endl;
}

int main()
{
	qdu::Person person;
	qdu::g_age = 10;

	qdu::func(); // 输出qdu::func()
	func(); // 输出func()

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

有个默认的全局命名空间,我们创建的命名空间默认都嵌套在它里面。

#include <iostream>
using namespace std;

namespace qdu
{
	int g_age;

	void func()
	{
		cout << "qdu::func()" << endl;
	}

	class Person
	{
		int m_age;
		int m_money;
	};
}

void func()
{
	cout << "func()" << endl;
}

int main()
{
	using namespace qdu;

	Person person;
	g_age = 10;

	qdu::func(); // 输出qdu::func()
	::func(); // 输出func()

	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/439647
推荐阅读
相关标签
  

闽ICP备14008679号