首页 > 作文

C++中的命名空间详细介绍

更新时间:2023-04-05 00:14:37 阅读: 评论:0

目录
命名空间的特性声明命名空间和命名空间成员全局命名空间不连续命名空间嵌套命名空间using声明和using编译指令命名空间别名综合代码示例总结

命名空间的特性

首先熟悉一下命名空间的两个概念。

声明区域:可以在其中进行声明的区域,如全局文件的声明区域是文件,函数内声明的变量声明区域为代码块。潜在作用域:潜在作用域从声明点开始,到其声明区域的结尾。因此潜在作用域比声明区域小,因为变了必须定义后才能使用。
这两个概念通过下图很好理解,也是编程的常识。

声明命名空间和命名空间成员

可以使用如下语法声明命名空间和空间成员

namespace jack {double a;struct b {};void f();}

全局命名空间

如果未在显式命名空间中声明某个标识符,则该标识符属于隐式全局命名空间的一部分。 一般情况下,尝试避免在全局范围内进行声明(入口点 main 函数除外,它必须位于全局命名空间中)。
全局命名空间可以是用 ::var 来调用。

不连续命名空间

即同一个命名空间可以在多个文件中定义,如
file1.cpp

namesapce a {int a;}

file2.cpp

namesapce a {int b;}

在编译时会将分散在各个文件中的同一个命名空间集合在一起。

嵌套命名空间

命名空间也是可以嵌套的

namespace a {namespace b {}}

using声明和using编译指令

using声明将特定的名称添加到它所属的声明区域中,例如using a::a;,相当于 java 中的静态导入,而using 编译指令使名称空间的所有名称都可以用,而不需要使用作用于解析符,如 using namespace std;,作用相当于 java 中的。import java.util.*。这里记录一下注意点。

using a::pal;using b::pal; // 送花error declaration conflictpal = 4;

上述代码会引起冲突。
一般而言使用using声明会更安全点。

命名空间别名

命名空间名称必须是唯一的,这意味着通常它们不应太短。 如果名称的长度使代码难以读取,或在不能使用 using 指令的标头文件中键入枯燥,则可以创建一个命名空间别名作为实际名称的缩写。 例如:

namespace a_very_long_namespace_name { class foo {}; }namespace avlnn = a_very_long_namespace_name;void bar(avlnn::foo foo){ }

综合代码示例

#include <iostream>using names武昌起义是谁领导的pace std;namespace a {    int a = 100;    namespace b            //嵌套一个命名空间b    {        int a = 20;    }}int a = 迷失的亲情电视剧200;//定义一个全局变量int main(int argc, char *argv[]) {    cout << "a::a =" << a::a << endl;    cout << "a::b::a =" << a::b::a << endl;    cout << "a =" <会计学课程< a << endl;    cout << "::a =" << ::a << endl;    int a = 30;    cout << "a =" << a << endl;  我国国体是什么  cout << "::a =" << ::a << endl;    return 0;}

output:

a::a =100
a::b::a =20
a =200
::a =200
a =30
::a =200

总结

到此这篇关于c++中的命名空间详细介绍的文章就介绍到这了,更多相关c++命名空间内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-05 00:14:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/83b61ce7d3e8ae1029eb8f639134e96b.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C++中的命名空间详细介绍.doc

本文 PDF 下载地址:C++中的命名空间详细介绍.pdf

标签:空间   声明   全局   区域
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图