Namespace 介绍

Namespace 介绍

C++语言中

#include<iostream>是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。
  在旧的标准C++中,使用#include<iostream.h>
  但在新标准中,用#include<iostream>,而且在VS中编程的同时要注意要添加:
  usingnamespace std;
  using namespace std详解
  一 :
  <iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
  后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
  因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespacestd;这样才能正确使用cout。
  二:
  所谓namespace,是指标识符的各种可见范围。
  C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
  由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:
  1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下:
  std::cout<< std::hex << 3.4 << std::endl;
  2、使用using关键字。
  usingstd::cout;
  usingstd::endl;
  以上程序可以写成
  cout<< std::hex << 3.4 << endl;
  3、最方便的就是使用usingnamespace std;
  例如:
  #include<iostream>
  #include<sstream>
  #include<string>
  usingnamespace std;
  这样命名空间std内定义的所有标识符都有效。就好像它们被声明为全局变量一样。那么以上语句可以如下写:
  cout<< hex << 3.4 << endl;
  因为标准库非常的庞大,所以程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都放在名字空间std中。但这又会带来了一个新问题。无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的。
  所以就有了<iostream.h><iostream>等等这样的头文件,一个是为了兼容以前的C++代码,一个是为了支持新的标准。
  命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加".h"

------------------------------------------------------------------------------

补充:

namespace   是C++的一个关键字 
  。实际上,它只是起到标识作用,把全局的变量,函数,类等放到一起,细化管理。下 
  面我们就来看一下名字空间究竟是怎样一个东东吧
  一,如何定义一个名字空间呢? 
  很简单,按以下格式: 
  namespace   Space'sName 
  { 
      //declaration 
  } 
  eg. 
  namespace   Hello 
  { 
      void   foo(){  cout<<"Hello";  } 
  } 
  名字空间是可以嵌套定义的,eg. 
  namespace   HelloWorld 
  { 
        namespace   Hello 
        { 
            void   foo(){  cout<<"Hello";  } 
        } 
    void  fooo(){   Hello::foo();   cout<<"   World!"<<endl;   } 
  } 
  二,如何使用
  在这里我们就举两个常用的方式吧。 
  1,作用域限定符:: 
  eg. 
  #include<iostream> 
  using  namespace   std; 
  namespace   HelloWorld 
  { 
        namespace   Hello 
        { 
            void   foo(){  cout<<"Hello";  } 
        } 
    void  fooo(){   Hello::foo();   cout<<"   World!"<<endl;   } 
  } 
  void  main() 
  { 
      HelloWorld::fooo(); 
  } 
  2,用using指令 
  #include<iostream> 
  using  namespace   std; 
  namespace   HelloWorld 
  { 
        namespace   Hello 
        { 
            void   foo(){  cout<<"Hello";  } 
        } 
    void  fooo(){   Hello::foo();   cout<<"   World!"<<endl;   } 
  } 
  using  namespace   HelloWorld; 
  void  main() 
  { 
      fooo(); 
  } 
  其实在上面的一个小程序中,我就用了一个using   namespace   std; :) 
  另外,若名字空间的名很长,或难记,我们还可以用别名 
  eg. 
  namespace   HW=HelloWorld; 
  这样,以后要是要用到HelloWorld的话就直接用HW就行了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Qt中,命名空间是一种用于组织代码和避免命名冲突的机制。Qt中自带的命名空间是"Ui",它通常用于存放与用户界面相关的类和对象。例如,当我们新建一个带窗体的项目时,会看到声明为"namespace Ui { class MainWindow; }"的命名空间。这个命名空间包含了与主窗口相关的类和对象。 如果你对Qt命名空间的使用感兴趣,你可以查阅这篇文章:https://lizhifun.blog.csdn.net/article/details/112584777,它详细介绍了如何使用Qt命名空间。 在C++中,命名空间的使用方式类似。你可以使用"namespace"关键字来声明一个命名空间,并使用大括号"{}"来界定命名空间的作用域。例如,"namespace func { int age = 18; }"将创建一个名为"func"的命名空间,并在其中定义了一个整型变量"age"并赋值为18。这样,你就可以通过"func::age"来访问这个变量。所以,在Qt中的命名空间"Ui"可以让我们更好地组织和管理与用户界面相关的代码。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Qt知识点梳理 —— NameSpace命名空间](https://blog.csdn.net/tingzhiyi/article/details/112584777)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Qt命名空间 Qt namespace](https://download.csdn.net/download/tingzhiyi/14740758)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值