namespace的用法和作用

转载:http://topic.csdn.net/t/20051020/11/4338811.html#

在大型软件开发项目中,类型和函数名冲突是常有的事,如:定义专用类型时就常常不只一次地使用相同的名字。为了避免这个问题。人们通常在代码中使用不同的词缀,由此造成代码很难管理、使用、阅读和编辑。碰到这种问题常常使人郁闷非常而且容易出错。看看下面的代码:  
   
  class   string   {    
                   
                    //这个类名虽然短小精干,意思表达明确,但是它已经被别人使用,你不能再用它作为类名了!    
   
        //...  
  };  
   
  class   CMYExclusive_string   {    
   
                      //   这倒是个较安全的名字,但是太冗长乏味。不断重复这样的名字会影响自己的心情。               //   况且这样处理还是有名字冲突的可能  
        //...  
  }  
   
  为了较好地解决这个问题,C++   提供了规定名字空间的手段,也就是用   namespaces   关键字。有了它,在自己代码中规范地命名类型和函数的自由度就大多了,有了它,你就可以充分使类型和函数的命名简洁、易于理解、使用方便和安全。从而摆脱了哪些在定义和声明中冗长乏味的词缀。你可以在名字空间中对类型或者函数进行分类,为类型和函数的使用系上安全带,例如:    
  //   某个头文件   vckbaseExcelSoft.h  
  namespace   vckbaseFSDUexcelSoft_   {  
   
        class   string   {  
                    //...  
                    };  
        class   vector   {  
                    //...  
                    };  
        //...etc.  
  }  
   
  接着可以象下面这样存取类型数据:  
   
  #include   "vckbaseExcelSoft.h"  
   
  void   main()   {  
   
          using   namespace   vckbaseFSDUexcelSoft_;    
          string   s;   //   引用   名字空间   vckbaseFSDUexcelSoft_里的   string   vckbaseFSDUexcelSoft_::string  
   
          //   下面又回到标准的   string    
          std::string   mySTDstr;    
  }

### 回答1: 使用 `using namespace std;` 可以省略在程序中使用标准库的命名空间 `std::`。这意味着,如果不使用 `using namespace std;`,在使用标准库的函数和对象时,需要在前面加上 `std::`,例如 `std::cout`、`std::endl`。而使用 `using namespace std;` 后,可以直接使用 `cout`、`endl` 等标准库函数和对象,使得代码更加简洁易读。但是需要注意的是,过度使用 `using namespace std;` 可能会导致命名冲突和不必要的错误,因此在实际编程中需要谨慎使用。 ### 回答2: 使用"using namespace std;"可以简化代码并使其更易读。在C++中,标准库(std)是包含了大量的函数、对象和类型的命名空间。命名空间是一种将相关的代码组织在一起的机制,以避免命名冲突。 不使用"using namespace std;"时,我们需要在使用标准库的函数、对象或类型之前加上"std::"前缀。例如,我们要使用cout对象进行输出时,需要写成std::cout。这样的写法虽然正确,但是会让代码变得繁琐且难以阅读。 而使用"using namespace std;"后,在我们的代码中就不再需要使用"std::"前缀。我们可以直接使用cout对象,代码就变得简洁明了。这样我们就可以更方便地使用标准库中的功能来完成我们的任务。 需要注意的是,在大型项目中,为了避免命名冲突,使用"using namespace std;"是不推荐的。因为在不同的命名空间中可能会存在相同的函数或对象名,如果不小心发生了命名冲突,就会导致代码错误。因此,在大型项目中,最好使用std::前缀的方式来确保代码的可读性和一致性。 ### 回答3: using namespace std;是一个C++语言的编译指令,在程序中加入该指令可以省略标准库中定义的类、函数和对象的前缀std::,使得代码更简洁易读。 在标准库中,有很多常用的类、函数和对象都属于std命名空间(namespace),比如iostream、stringvector等。使用这些库需要在前面加上std::前缀,比如std::cout、std::string。 而加入using namespace std;之后,就可以直接使用标准库中的类、函数和对象,无需再加上std::前缀。比如可以直接写cout、string,这样代码看起来更加简洁,书写起来也更加方便。 然而,使用using namespace std;也有一些潜在的问题。由于命名空间的目的是避免命名冲突,如果在程序中使用了多个命名空间,可能会出现命名冲突的情况。比如,如果程序自定义了一个名为cout的对象,那么加入using namespace std;之后,可能会与std命名空间中的cout产生冲突。为了避免这种情况,通常建议避免在头文件中使用using namespace std;,而是在具体的代码文件中使用。 综上所述,using namespace std;的作用是为了简化程序中使用标准库的代码书写,使得代码更加简洁易读。但同时也需要注意避免潜在的命名冲突问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值