IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++ 命名空间namespace -> 正文阅读

[C++知识库]C++ 命名空间namespace

命名冲突问题

#include <stdio.h>
#include <stdlib.h>
int rand=0int main()
{
	//这里的rand存在命名冲突问题
	printf("%d ", rand);
	return 0;
}
  1. 我们自己定义的变量,函数可能和库里面的冲突。
  2. 做大项目,多人协作时,与同事命名冲突。

可以使用命名空间来解决这些问题,每一个用户声明的命名空间都代表一个不同的命名空间域,在该命名空间中,可以包含嵌套其他的命名空间,以及函数,类型,变量等的声明和定义。在该命名空间内部声明的实体被称为命名空间成员。

命名空间的定义

  1. 普通的命名
//定义了一个名字为GENIE的命名空间
namespace GENIE
{
	//命名空间里面的内容可以定义变量/类型/函数
	int a;
	int Sub(int a, int b)
	{
		return a - b;
	}
}
  1. 命名空间可以嵌套
namespace GENIE
{
	int a;
	struct Node
	{
		struct Node* next;
		int val;
	};
	//在GENIE里面嵌套了SHE
	namespace SHE
	{
		int b;
		int c;
	}
}
  1. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中
 A.h文件代码:
 //函数和变量的声明
 namespace GENIE
 {
 	int ADD(int x,int y);
 	double val;
 }
B.cpp文件的代码实现
include"A.h"
namespace GENIE
{
	//函数的定义
	int ADD(int x,int y)
	{
		return x+y;
	}
	//变量的定义初始化
	double val=3.14;
}

在同一个作用域中,如果新声明的一个命名空间的名称与前面声明过的命名空间的名称同名,那么这个后声明的命名空间就是前面声明的命名空间的累加,这两部分内容属于同一个命名空间。

命名空间的使用

1.加命名空间名称及作用域限定符 ’ :: ’


namespace GENIE
{
	int x = 1;
	int y = 2;
	int ADD(int x, int y)
	{
		return x + y;
	}
	int Sub(int x, int y)
	{
		return x - y;
	}

}

int main()
{
	printf("%d ", GENIE::x);
}
  1. 使用using,一次引入一个命名空间成员
    using 声明的作用是:使一个命名空间成员在当前作用域中可见,可见的范围是从using声明的语句开始,直到当前作用域结束。如果在using声明语句之后,在当前作用域中又嵌套了其他的作用域,那么using声明在当前作用域中的嵌套作用域中也同样有效。
namespace GENIE
{
	int x = 1;
	int y = 2;
	int ADD(int x, int y)
	{
		return x + y;
	}
	int Sub(int x, int y)
	{
		return x - y;
	}

}

using GENIE::y;
int main()
{
	printf("%d ", GENIE::x);
	printf("%d ", y);
}
  1. 使用using namespace命名空间引入所有命名空间成员
namespace GENIE
{
	int x = 1;
	int y = 2;
	int ADD(int x, int y)
	{
		return x + y;
	}
	int Sub(int x, int y)
	{
		return x - y;
	}

}
using namespace GENIE;
int main()
{
	printf("%d ", x);
	printf("%d ", y);
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 08:41:10  更:2021-11-26 08:41:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:45:02-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码