C++空间命名的使用

 更新时间:2023年01月28日 08:54:00   作者:林耀东(东叔)  
本文主要介绍了C++空间命名的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

提示:由于C++是在C语言基础之上,增加了很多新的东西。

本文讲解命名空间的具体使用方法

提示:以下是本篇文章正文内容,下面案例可供参考

一、命名空间

定义:在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存 在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化, 以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。

代码如下:

#include <stdio.h>
#include <stdlib.h>
int rand = 10;
int main()
{
	printf("%d",rand);
	return 0;
}

然后报错为:

二、命名空间定义

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。

namespace Morgan//名称
{
    //内容........
}

1.嵌套性

代码如下:

正常的嵌套

#include <stdio.h>
#include <stdlib.h>
namespace mo
{
	int rand = 10;
	namespace mor
	{
		int rand = 90;
	}
}
int main()
{
 
	printf("%d\n", mo::mor::rand);
	printf("%d\n", mo::rand);
 
	return 0;
}

 结果

函数嵌套

#include <stdio.h>
#include <stdlib.h>
namespace mo
{
	int rand = 10;
	namespace mor
	{
		int pr()
		{
			return 1;
		}
		int rand = 90;
	}
}
int main()
{
	printf("%d\n", mo::mor::pr());
	return 0;
}

结果

2.和并性

3. 同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。 ps:一个工程中的test.h和上面test.cpp中两个N1会被合并成一个

图片如下:

二、命名空间的使用

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

代码如下:

    namespace mo {
    	int a = 10;
    	int b = 20;
    	}
    }
     
    //方法1.:命名空间名称+作用域限定符
     
    int main() {
    	printf("%d\n", mo::a);//10
    	return 0;
    }

2.使用using将命名空间中某个成员引入

代码如下:

namespace mo {
	int a = 10;
	int b = 20;
	}
}
 
//使用方法2.:
using mo::b;
int main() {
	printf("%d\n", mo::a);	//10
	printf("%d\n", b);		//20
	return 0;
}

3.使用using namespace 命名空间名称 引入

代码如下:

    namespace mo {
    	int a = 10;
    	int b = 20;
    }
     
    using namespace mo;
    int main() {
    	printf("%d\n", a);
    	printf("%d\n", b);
    	return 0;
    }

直接引入空间名称,就不需要作用域限定符了,命名空间mo的大门完全敞开,想访问哪个就访问哪个。

总结

提示:这里对文章进行总结:

优点缺点

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

优点:指定作用域,做到最好的隔离方法

缺点:如果要使用多次命名空间中的某一个变量或函数会很麻烦

2.使用using将命名空间中某个成员引入

优点:如果要使用多次命名空间中的某一个变量或函数可以直接引入

using将命名空间刚好为1.与2.的折中方案

3.使用using namespace命名空间名称 引入

优点:直接引入空间名称,就不需要作用域限定符了,命名空间mo的大门完全敞开,想访问哪个就访问哪个。

缺点:很容易发生冲突

到此这篇关于C++空间命名的使用的文章就介绍到这了,更多相关C++空间命名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Qt自绘实现苹果按钮滑动效果的示例代码

    Qt自绘实现苹果按钮滑动效果的示例代码

    这篇文章主要介绍了Qt自绘实现苹果按钮滑动效果的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • C语言的递归函数详解

    C语言的递归函数详解

    这篇文章主要为大家介绍了C语言的递归函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • C++ STL容器适配器使用指南

    C++ STL容器适配器使用指南

    C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈,今天我们来探究一下stl容器适配器的使用吧
    2021-11-11
  • C语言实现学生信息管理系统(链表)

    C语言实现学生信息管理系统(链表)

    这篇文章主要为大家详细介绍了C语言实现学生信息管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • Qt Design Studio安装图文教程

    Qt Design Studio安装图文教程

    本文主要介绍了Qt Design Studio安装图文教程,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • C++中的boost::function库简介

    C++中的boost::function库简介

    这篇文章介绍了C++中的boost::function库,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • pybind11: C++ 工程提供 Python 接口的实例代码

    pybind11: C++ 工程提供 Python 接口的实例代码

    这篇文章主要介绍了pybind11: C++ 工程如何提供 Python 接口,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • 详解OpenMP的线程同步机制

    详解OpenMP的线程同步机制

    在本篇文章当中主要给大家介绍 OpenMP 当中线程的同步和互斥机制,在 OpenMP 当中主要有三种不同的线程之间的互斥方式。下面就来和大家来讨论一下OpenMP当中的互斥操作,需要的可以参考一下
    2023-01-01
  • C++写Linux框架示例解析

    C++写Linux框架示例解析

    这篇文章主要为大家介绍了C++实现Linux框架示例代码详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • c++中的自增/自减操作方式

    c++中的自增/自减操作方式

    这篇文章主要介绍了C++中的自增和自减运算符,包括前缀和后缀形式,并通过一个具体的例子解释了自增/自减表达式的值与函数参数传递的关系,文章指出,自增/自减表达式的值是在表达式求值时确定的,而不是在自增/自减运算后
    2025-03-03

最新评论