首页 > 编程语言 >C++命名空间介绍、定义、作用、是否允许嵌套

C++命名空间介绍、定义、作用、是否允许嵌套

时间:2024-11-15 15:47:25浏览次数:3  
标签:定义 int 代码 namespace 空间 嵌套 C++ 命名 cout

本文章代码块默认为写了std命名空间的条件下,所以代码里面的输出直接写了cout,没写作用域

什么是c++命名空间

C++命名空间是一种机制,用于解决全局变量名或函数名之间的冲突问题。它可以将一组相关的变量、函数和类组织在一起,形成一个独立的命名空间,避免命名冲突。命名空间通过在代码中定义和使用关键字"namespace"来创建。

#include <iostream>
using namespace std;

// 定义命名空间
namespace A {
    int num = 10;
    void func() {
        cout << "This is function in namespace A" << endl;
    }
}

namespace B {
    int num = 20;
    void func() {
        cout << "This is function in namespace B" << endl;
    }
}

int main() {
    // 使用命名空间A中的变量和函数
    cout << A::num << endl; // 输出:10
    A::func(); // 输出:This is function in namespace A

    // 使用命名空间B中的变量和函数
    cout << B::num << endl; // 输出:20
    B::func(); // 输出:This is function in namespace B
    return 0;
}

作用

  • 避免命名冲突:不同的命名空间中可以有相同名称的标识符,它们之间不会发生冲突。
  • 提高代码可读性:通过使用命名空间,可以更清晰地区分不同模块或库中的标识符。
  • 便于扩展和维护:命名空间可以帮助组织和管理代码,使得代码的扩展和维护更加方便。

定义命名空间

定义命名空间使用namespace关键字,后面跟着命名空间的名字,然后用花括号{}将命名空间中的内容(变量、函数、类等声明)括起来。

namespace MyNamespace {
    int myVariable = 10;
    void myFunction() {
        cout << "This is my function." << endl;
    }
}

当命名空间名字太长时,也可为命名空间取别名

namespace long_namespace_name {
    // 这里有很多代码
}
namespace alias = long_namespace_name;

using指令会将整个命名空间中的所有成员引入当前作用域,不过这种方式可能会引起名称冲突,应该谨慎使用。

using namespace MyNamespace;
using namespace std;
int main() {
    cout << myVariable << endl;
    myFunction();
    return 0;
}

命名空间嵌套

C++ 允许命名空间嵌套。这意味着可以在一个命名空间内部定义另一个命名空间。

namespace Outer {
    int outerVariable = 1;
    namespace Inner {
        int innerVariable = 2;
        void innerFunction() {
            cout << "Inner function." <<endl;
        }
    }
}

要在主函数中访问innerVariable和innerFunction,可以这样写:

int main() {
    cout << Outer::Inner::innerVariable << endl;
    Outer::Inner::innerFunction();
    return 0;
}

标签:定义,int,代码,namespace,空间,嵌套,C++,命名,cout
From: https://blog.csdn.net/m0_73949707/article/details/143719279

相关文章

  • 什么是 C++ 中的常量表达式? 有什么用途?and如何判断一个表达式是否是常量表达式?
    参考文献:constexpr介绍以及与const的区别-CSDN博客定义在C++中,常量表达式是一种在编译期间就能计算出结果的表达式。字面量常量:如整数字面量(1、2、3等)、字符字面量('a'、'b'等)、布尔字面量(true、false)和浮点字面量(3.14、2.718等)。例如,表达式3+4中的3和4就是整数字面量,整......
  • 【C++源码编译】
    C++源码到二进制可执行文件的过程与C语言类似,包括四个过程:预编译、编译、汇编、链接1、预编译C/C++编译过程中的第一个阶段,主要目的是对源代码进行处理和准备工作。下面是预编译的主要步骤:去除宏定义:将所有的#define删除,并展开所有的宏定义,将宏替换为具体的值或表达......
  • 自定义注解进行数据脱敏
    前言有些时候,我们可能对输出的某些字段要做特殊的处理在输出到前端,比如:身份证号,电话等信息,在前端展示的时候我们需要进行脱敏处理,这时候通过自定义注解就非常的有用了。在Jackson中要自定义注解,我们可以通过@JacksonAnnotationsInside注解来实现,如下示例:一、自定义注解import......
  • 2020年计挑赛往届真题(C++)
    因为17号要开赛了,甚至是用云端编辑器,debuff拉满,只能临时抱佛脚了各个选择题的选择项我就不标出来了,默认ABCD排,手打太麻烦了目录单选题:1.阅读以下语句:doublem=0;for(inti=3;i>0;i--)m+=1/i;将m保留三位小数输出,结果为()2.下列选项中,不是C++关键字的是()    3.下列选......
  • Windows系统日志报错:生成了一个严重警告并将其发送到远程终结点。这会导致连接终止。T
    当我们检查Windows系统日志发现有一个报错:生成了一个严重警告并将其发送到远程终结点。这会导致连接终止。TLS协议所定义的严重错误代码是10。WindowsSChannel错误状态是1203。导致报错的原因是什么?该如何处理?驰网飞飞和你分享其实这个报错和“生成以下严重警告:10。内部错误......
  • inline 函数:让你的 C++ 代码飞起来——深度剖析与实战技巧
    你是否曾经为C++代码中的函数调用开销感到烦恼?每次函数调用都需要创建栈帧、传递参数、跳转执行,这些看似微小的操作,累计起来就会成为性能瓶颈。在对性能要求苛刻的程序中,这些开销可能会影响到整体表现。今天,我们要聊的就是一个解决方案——inline函数。想象一下,如果编译器......
  • 一种实现docker容器嵌套的方法
    【背景】   有个用户需要在docker容器中再运行一个容器,实现容器嵌套,研究了下,可以这样来实现。 【方法】1.在系统上先安装一个docker服务,我的版本是20.10.17[root@testkvm~]#rpm-qa|grepdockerdocker-ce-20.10.17-3.el7.x86_64docker-ce-cli-20.10.17-3.el7.......
  • 深入探索 C++11 第一弹:现代 C++ 编程的基石与革新
    1、C++的发展历史C++11是C++的第⼆个主要版本,并且是从C++98起的最重要更新。C++11对C++语言的发展具有深远的影响,它使C++语言更加现代化、高效、灵活和易于使用,为开发者提供了更强大的工具和更好的编程体验,推动了C++在各个领域的广泛应用和持续发展。话不多说,下......
  • 打卡信奥刷题(239)用C++工具信奥P1866 [普及组/提高] 编号
    编号题目描述太郎有NNN只兔子,现在为了方便识别它们,太郎要给他们编号。兔子们向太郎表达了它们对号码的喜好,每个兔子i......
  • 第21课-C++[set和map学习和使用]
    ......