namespace用法

来源:互联网 发布:淘宝买iphone那个店 编辑:程序博客网 时间:2024/06/03 16:20

命名冲突是指在相同的作用域内出现多个同名的类、函数或变量。
使用namespace命名空间可以解决命名冲突的问题。

namespace的定义与使用

//Hello.hnamespace SH  {      class Hello      {      public:          Hello(void);          ~Hello(void);      public:          void SayHello();      };      void HelloWord();  }  
//Hello.cpp#include "StdAfx.h"  #include "Hello.h"  #include <iostream>  using std::cout;  using std::endl;  namespace SH  {      Hello::Hello(void){}      Hello::~Hello(void){}      void Hello::SayHello()      {          cout << "how are you!" << endl;      }      void HelloWord()      {          cout << "Hello World!" << endl;      }    }
SH::Hello::Hello(void){}  SH::Hello::~Hello(void){}  void SH::Hello::SayHello()  {      cout << "how are you!" << endl;  }  void SH::HelloWord()  {      cout << "Hello World!" << endl;  } 

namespace的定义也可以是不连续的

//Hello.hnamespace SH  {      class Hello      {      public:          Hello(void);          ~Hello(void);      public:          void SayHello();      };  }  void HelloWord();  namespace SH  {      void Hello2Sunly();  }  
//Hello.cpp#include "StdAfx.h"  #include "Hello.h"  #include <iostream>  using std::cout;  using std::endl;  SH::Hello::Hello(void)  {  }  SH::Hello::~Hello(void)  {  }  void SH::Hello::SayHello()  {      cout << "how are you!" << endl;  }  void HelloWord()  {      cout << "Hello World!" << endl;  }  void SH::Hello2Sunly()  {      cout << "Hello Sunly!" << endl;  }

使用命名空间方法:

(1)加命名空间的前缀和作用域运算符

#include "stdafx.h"  #include <iostream>  int main()  {      std::cout << "Hello World!" << std::endl;      return 0;  }  

这种方式最安全,因为使用的每个变量都用命名空间的前缀指明了具体的版本。但比较麻烦,因为每次使用都要加前缀。

(2)using声明

#include "stdafx.h"  #include <iostream>  using std::cout;  using std::endl;  int main()  {      cout << "Hello World!" << endl;      return 0;  }  

需要哪个变量时就声明哪个变量,这种方式相对较安全,也不至于太麻烦,只推荐的一种方式。用using引入的变量,其作用域从using指示开始一直到using指示所在的作用域结束。

(3)using 指示

#include "stdafx.h"  #include <iostream>  #include "Hello.h"  using namespace std;  using namespace SH;  int main()  {      cout << "Hello World!" << endl;      Hello2Sunly();      return 0;  }  

这种方式将某一命名空间下的所有变量都注入进来了,这种方式使编程更简单了,不用把需要用到的变量一个一个地用using加进来,但又再次带来了命名冲突的危险,因为多个命名空间都提到当前的作用域下,又有可能发生重名的问题。

参考博客:http://blog.csdn.net/luoweifu/article/details/44142619

原创粉丝点击