C++命名空间

分手后的思念是犯贱 2022-02-13 10:17 393阅读 0赞

命名空间

提到C++,我们就不得不说命名空间了,那么命名空间到底是什么呢?
也许你经常会看到别人写的C++代码中总是有这样一句:

  1. using namespace std;

其中namespace 就是我们C++中的命名空间。

  • 首先我们来说一下为什么C++为什么要引入命名空间
    在我们的C/C++语言中,变量、函数以及类都是大量存在的,这些变量、函数以及类都是存在于全局域中的,一不小心,我们就有可能有冲突,再比如,假如我们以后写项目,要链接第三方的库文件,那么是不是就很有可能我们自己起的名字就有可能和别人的冲突,在我们的C语言中,我们只能靠将名字尽量起的复杂一点来解决这个问题,但是也还是无法完全避免,所以为了避免这种冲突,C++就引入了命名冲突这种机制,来避免命名冲突,解决命名冲突的问题。

命名空间定义

  1. namespace 名称{
  2. }

例:

  1. namespace zhangsan{
  2. int a;
  3. int b;
  4. int add(int left,int right){
  5. return left + right;
  6. }
  7. }

这个代码的意思就是,a,b变量以及add函数就是我们zhangsan命名空间下的,假如再有一个add函数,那么它就不是我们这里的add函数了。这样就很方便的使用我们自己命名空间下的东西了。。命名空间不仅可以定义变量还可以定义函数。

命名空间嵌套

  1. namespace zhangsan{
  2. int a;
  3. namespace lisi{
  4. int b;
  5. }
  6. }

注:同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

命名空间的使用

  • 第一种

    using namespace zhangsan;
    //这种相当于将命名空间里面的内容全部展开,这种不安全,不建议使用,不过我们平时写简单的代码时,可以使用,用起来也很方便

  • 第二种

    //部分展开,只展开命名空间部分内容,相对来说比较安全
    using zhangsan::a;

  • 第三种

    //用那个,展开那个,这种最安全,但是写起来也繁琐,因为每次都只能这样做才行。
    zhangsan::a;

    // :: 为作用域限定符

注意:一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中

以上就是关于命名空间的相关内容,利用这种机制我们就能很好的解决命名冲突的问题。是不是很秀。。。

发表评论

表情:
评论列表 (有 0 条评论,393人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++ 命名空间

    C++ 命名空间 假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们

    相关 C++命名空间

    本讲基本要求 \ 掌握:命名空间的作用及定义;如何使用命名空间。 \ 了解:使用早期的函数库 重点、难点 ◆命名空间的作用及定义;如何使用命名空间。 在学习本书

    相关 C++命名空间

    一、 为什么需要命名空间(问题提出) 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中 常见的同名冲突。 在 C语言中定义了3个层次的作用域,即文件(编

    相关 C++命名空间

    命名空间支持是C++的一项特性,加入你有A和B两个地方提供的函数但是名字都叫fun(),这样使用fun()的时候,编译器就不知道该用哪个了。命名空间能够让程序员把函数封装在一个

    相关 C++命名空间

    概述       在C语言中程序的全局变量作用域只有一个,所有的全局标识符都共享同一个作用域,在多人开发的时候,容易造成标识符冲突。C++为了解决这个问题提出了命名空间这

    相关 C++命名空间

    在 C++ 中,名称( name )可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的 C++ 库时,这些标识

    相关 C++命名空间

    本讲基本要求      \ 掌握:命名空间的作用及定义;如何使用命名空间。      \ 了解:使用早期的函数库  重点、难点      ◆命名空间的作用及定义;