广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中名称空间的示例分析
  • 612
分享到

C++中名称空间的示例分析

2023-06-22 06:06:16 612人浏览 泡泡鱼
摘要

小编给大家分享一下c++中名称空间的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.名称空间在C++当中,名称可以是变量、函数、结构体、枚举、类以及结构体和类的成员。这本身并没有问题,但随着项目的增大,名称之间相

小编给大家分享一下c++中名称空间的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

1.名称空间

在C++当中,名称可以是变量、函数、结构体、枚举、类以及结构体和类的成员。这本身并没有问题,但随着项目的增大,名称之间相互冲突的可能性也会大大增加。

比如我们使用了多个厂商的代码,它们都定义了List,Treenode类,但定义的方式不同,也就没办法互相兼容。这个时候当我们希望使用一个库的List类,而使用另外一个的Tree类,就会非常麻烦。这类冲突被称为名称空间(namespace)问题。

1.1传统C++名称空间

我们先来复习一下几个术语。

声明区域:

声明区域指的是可以在其中进行声明的区域,比如我们可以在函数外侧声明全局变量,对于全局变量,它的声明区域就是其声明所在的文件。对于函数中声明的变量, 它的声明区域就是其声明所在的代码块。

潜在作用域:

潜在作用域的范围比声明区域更加精确,它从声明语句处开始一直到声明区域的结尾。这是因为变量必须定义之后才能使用,所以潜在作用域的范围比声明区域要小。

这里有一个细节,变量并不一定在整个潜在作用域都是可见的。因为可能还会被嵌套在声明区域中的同名变量隐藏。比如说我们同时定义了一个全局变量和一个函数中的同名变量,那么在函数当中,外侧的全局变量将会被同名的局部变量隐藏。

作用域:

结合前面所说的,变量对于程序而言可见的范围被称为作用域,它又比潜在作用域更加精确一些。

1.2新的名称空间特性

C++新增了通过定义一种新的声明区域来创建命名的名称空间,这样做的目的是提供一个声明名称的区域。一个名称空间中的名称不会与另外一个名称空间的相同名称发生冲突,同时允许程序的其他部分使用该名称空间中声明的东西。

比如C++ Primer当中的这个例子,下面使用新的关键字namespace创建了两个名称空间A和B。

namespace A {    double pail;    void fetch();    int pal;    struct Well {...};}namespace B {    double bucket(double n) {...}    double fetch;    int pal;    struct Hill {...};}

名称空间可以是全局的,也可以位于另外一个名称空间中,但不能位于代码块中。因此,默认名称空间里的所有声明的名称的链接性都是外部的,const关键字修饰的常量除外。

除了用户定义的名称空间之外,还存在另外一个名称空间——全局名称空间。它对应于文件级的声明区域,因此前面所说的全局变量现在被描述为位于全局名称空间中。

任何名称空间中的名称都不会与其他空间的名称发生冲突,因此A中的fetch可以和B中的fetch共存。名称空间中的声明和定义规则桶全局声明和定义的规则相同。

名称空间是开放的,可以把名称加入到已经创建的名称空间中,比如:

namespace A {    char *Goose(const char *);}

同样我们之前在名称空间A当中只是定义了函数fetch,而没有定义,我们也可以在之后的代码当中添加定义:

namespace A {    void fetch () {        ...    }}

当然而我们需要一种方法来访问给定名称空间里的名称,最简单的方法是使用作用域解析符::,使用名称空间名来找到该名称:

A::pail = 12.34;A::fetch();

没有作用域解析符的名称成为未限定名称,包含了名称空间的名称称为限定的名称。

这一篇当中涉及了许多概念,看起来有些晦涩。但我个人感觉,这些概念理解起来并不复杂,主要是一些说明性的语言读起来有些难以理解。最好的办法就是沉下气来,一点点精读,先把前面理解了再看后面。

看完了这篇文章,相信你对“C++中名称空间的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网其他教程频道,感谢各位的阅读!

--结束END--

本文标题: C++中名称空间的示例分析

本文链接: https://www.lsjlt.com/news/303239.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++中名称空间的示例分析
    小编给大家分享一下C++中名称空间的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1.名称空间在C++当中,名称可以是变量、函数、结构体、枚举、类以及结构体和类的成员。这本身并没有问题,但随着项目的增大,名称之间相...
    99+
    2023-06-22
  • C++中的命名空间实例分析
    这篇“C++中的命名空间实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++中的命名空间实例分析”文章吧。命名空间的...
    99+
    2023-06-29
  • VB.NET名字空间的示例分析
    小编给大家分享一下VB.NET名字空间的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!VB.NET名字空间在编写.NET软件时,我们会用到类和其他类型。为...
    99+
    2023-06-17
  • namesapce命名空间的示例分析
    这篇文章主要介绍了namesapce命名空间的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.命名空间的使用目的   在PHP中函数、类、常量是不允许同名...
    99+
    2023-06-06
  • Flex命名空间的示例分析
    这篇文章主要介绍了Flex命名空间的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex命名空间详解通过命名空间可以控制所创建的属性和方法的可见性。请将public...
    99+
    2023-06-17
  • Python名称空间与作用域实例分析
    本篇内容主要讲解“Python名称空间与作用域实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python名称空间与作用域实例分析”吧!一 名称空间名称空间即存放名字与对象映射/绑定关系的...
    99+
    2023-06-30
  • JavaScript命名空间模式的示例分析
    这篇文章将为大家详细讲解有关JavaScript命名空间模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:前言命名空间可以被认为是唯一标识符下代码的逻...
    99+
    2022-10-19
  • C++11内联命名空间举例分析
    本篇内容介绍了“C++11内联命名空间举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!命名空间简介随着软件开发规模的扩大,类名,函数名...
    99+
    2023-06-19
  • oracle中表空间的示例分析
    这篇文章主要介绍了oracle中表空间的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。oracle 的表空间实例详解查询表空间SEL...
    99+
    2022-10-18
  • PHP核心特性命名空间的示例分析
    小编给大家分享一下PHP核心特性命名空间的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!提出PHP 在 5.3 后提出了命名空间用来解决组件之间的命名冲突问题,主要参考了文件系统的设计:同一个目录下不允许有相同的文...
    99+
    2023-06-15
  • oracle中空间查询的示例分析
    这篇文章主要介绍oracle中空间查询的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! ~~~~~~~~~~~~~ORACLE查看某用户占用了多少...
    99+
    2022-10-18
  • 网站空间漏洞名词解释的示例分析
    今天就跟大家聊聊有关网站空间漏洞名词解释的示例分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 此次“勒索病毒”的入侵,使我们不得不多加以防范。对于一些有关网站空间中常见...
    99+
    2023-06-07
  • PHP关键特性之命名空间的示例分析
    这篇文章主要介绍PHP关键特性之命名空间的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!你知道命名空间主要是为了解决代码中类和函数可能存在冲突的问题的吗?而这个特性其他语言一早就有,PHP则是姗姗来迟,它的出...
    99+
    2023-06-15
  • 示例详解C++语言中的命名空间 (namespace)
    目录前言1. 命名空间 2. using 指令 3. 不连续的命名空间 4. 嵌套的命名空间 5. 命名空间内变量、函数、全局变量的作用域5.1 using namespace fi...
    99+
    2022-11-12
  • mysql中表空间传输的示例分析
    这篇文章主要介绍了mysql中表空间传输的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说明:MySQL(5.6.6及以上),innodb_file_per_tabl...
    99+
    2023-06-06
  • linux中网络接口名称限制的示例分析
    这篇文章将为大家详细讲解有关linux中网络接口名称限制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux中每个网络接口都有一个名称,可以使用ifconfig命令来查询当前系统中的接口。那...
    99+
    2023-06-12
  • 【C++】命名空间 namespace 与 标准流 iostream ( 命名空间概念简介 | 命名空间定义 | 命名空间使用 | iostream 中的命名空间分析 )
    文章目录 一、命名空间 namespace1、命名空间基本概念2、名称概念4、C 语言的命名空间3、命名空间避免标识符冲突 二、命名空间定义1、命名空间基本概念2、命名空间定义语法3、代码示例 - 命名空间定义使用 三、命名...
    99+
    2023-08-20
    c++ namespace iostream 命名空间 标准流 原力计划
  • element vue validate验证名称重复的示例分析
    小编给大家分享一下element vue validate验证名称重复的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体代码如下所示:<!DOCTYPE html...
    99+
    2022-10-19
  • CentOS 6.X更改网卡名称的示例分析
    这篇文章将为大家详细讲解有关CentOS 6.X更改网卡名称的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。CentOS 6.X下修改网卡名称有三种方法:方法1:修改UDEV文件,删除里面的内容;...
    99+
    2023-06-10
  • MySQL中隐藏空间问题的示例分析
    小编给大家分享一下MySQL中隐藏空间问题的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!MySQL的隐藏空间通过环境变量TMPDIR的设置实现。如果未设置TMPDIR,MySQL...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作