C++学习Day01之namespace命名空间


一、程序及输出

1.1 命名空间用途: 解决名称冲突

game1.h

#include <iostream>
using namespace std;


namespace KingGlory
{
   
	void goAtk();
}

game1.cpp

#include "game1.h"

void KingGlory::goAtk()
{
   
	cout << "王者荣耀攻击实现" << endl;
}

game2.h

#include <iostream>
using namespace std;


namespace LOL
{
   
	void goAtk();
}

game2.cpp

#include "game2.h"

void  LOL::goAtk()
{
   
	cout << "LOL攻击实现" << endl;

}

main.cpp

#include<iostream>
using namespace std;
#include "game1.h"
#include "game2.h"

//1、命名空间用途: 解决名称冲突
void test01()
{
   
	KingGlory::goAtk();

	LOL::goAtk();
}
int main(){
   
	test01();
	system("pause");
	return EXIT_SUCCESS;
}

输出:
在这里插入图片描述

1.2 命名空间内容

namespace A
{
   
	int m_A;
	void func();
	struct Person
	{
   };
	class Animal
	{
   };
}

编译器没有报错提示。

1.3 命名空间必须要声明在全局作用域下

在这里插入图片描述

1.4 命名空间可以嵌套命名空间

#include<iostream>
using namespace std;
namespace B
{
   
	int m_A = 10;
	namespace C
	{
   
		int m_A = 20;
	}
}
void test03()
{
   
	cout << "B空间下的m_A = " << B::m_A << endl;
	cout << "C空间下的m_A = " << B::C::m_A << endl;
}
int main(){
   
	test03();
	system("pause");
	return EXIT_SUCCESS;
}

输出:
在这里插入图片描述

1.5 命名空间开放,可以随时给命名空间添加新的成员

#include<iostream>
using namespace std;
namespace B
{
   
	int m_A = 10;
	namespace C
	{
   
		int m_A = 20;
	}
}
namespace B
{
   
	int m_B = 100;
}
void test04()
{
   
	cout << "B空间下的m_A = " << B::m_A << endl;
	cout << "B空间下的m_B = " << B::m_B << endl;
}
int main(){
   
	test04();
	system("pause");
	return EXIT_SUCCESS;
}

输出:
在这里插入图片描述

1.6 命名空间可以是匿名的

#include<iostream>
using namespace std;
namespace
{
   
	int m_C = 1000;
	int m_D = 2000; 
	//当写的命名空间的匿名的,相当于写了  static int m_C = 1000; static int m_D = 2000;
}

void test05()
{
   
	cout << "m_C = " << m_C   << endl;
	cout << "m_D = " << ::m_D << endl;
}
int main(){
   
	test05();
	system("pause");
	return EXIT_SUCCESS;
}

输出:
在这里插入图片描述

1.7 命名空间可以起别名

#include<iostream>
using namespace std;
namespace veryLongName
{
   
	int m_E = 10000;
	void func()
	{
   
		cout << "aaa" << endl;
	}
}

void test06()
{
   
	namespace veryShortName = veryLongName;
	cout << veryShortName::m_E << endl;
	cout << veryLongName::m_E << endl;
	veryLongName::func();
}
int main(){
   
	test06();
	system("pause");
	return EXIT_SUCCESS;
}

输出:
在这里插入图片描述


二、分析与总结

1、命名空间用途: 解决名称冲突
2、命名空间内容:可以放 变量、函数、结构体、类…
3、命名空间 必须要声明在全局作用域下
4、命名空间可以嵌套命名空间
5、命名空间是开放的,可以随时给命名空间添加新的成员
6、命名空间可以是匿名的
7、命名空间可以起别名

相关推荐

  1. namespace命名空间

    2024-02-03 14:56:02       16 阅读
  2. PHP中什么是命名空间Namespace)?

    2024-02-03 14:56:02       43 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-03 14:56:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-03 14:56:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-03 14:56:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-03 14:56:02       20 阅读

热门阅读

  1. CICD注册和使用gitlab-runner常见问题

    2024-02-03 14:56:02       33 阅读
  2. 2024/2/2

    2024-02-03 14:56:02       30 阅读
  3. Python学习之路-Tornado基础:初识Tornado

    2024-02-03 14:56:02       31 阅读
  4. 为什么 IP 协议在互联网中非常重要

    2024-02-03 14:56:02       28 阅读
  5. C#学习笔记_运算符重载

    2024-02-03 14:56:02       27 阅读
  6. [NOIP2013 提高组] 货车运输

    2024-02-03 14:56:02       32 阅读
  7. 函数大聚会(c++题解)

    2024-02-03 14:56:02       29 阅读