namespace用法
2018-04-11 10:48
267 查看
命名冲突是指在相同的作用域内出现多个同名的类、函数或变量。
使用namespace命名空间可以解决命名冲突的问题。
namespace的定义与使用
namespace的定义也可以是不连续的
这种方式最安全,因为使用的每个变量都用命名空间的前缀指明了具体的版本。但比较麻烦,因为每次使用都要加前缀。
(2)using声明
需要哪个变量时就声明哪个变量,这种方式相对较安全,也不至于太麻烦,只推荐的一种方式。用using引入的变量,其作用域从using指示开始一直到using指示所在的作用域结束。
(3)using 指示
这种方式将某一命名空间下的所有变量都注入进来了,这种方式使编程更简单了,不用把需要用到的变量一个一个地用using加进来,但又再次带来了命名冲突的危险,因为多个命名空间都提到当前的作用域下,又有可能发生重名的问题。
参考博客:http://blog.csdn.net/luoweifu/article/details/44142619
使用namespace命名空间可以解决命名冲突的问题。
namespace的定义与使用
//Hello.h namespace 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.h namespace 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
相关文章推荐
- PHP命名空间namespace定义及导入use用法详解
- C++中的namespace的用法
- namespace的用法
- struts2 namespace 用法解析
- namespace用法
- Flex Namespace的用法
- namespace的用法理解
- namespace 的用法
- [Flex]Flex编程注意之Namespace的用法
- C++中的namespace用法
- C++学习之namespace的用法
- C#中的using和namespace用法
- namespace的简单用法
- php中namespace及use用法分析
- namespace的用法和作用(转载)
- struts2配置中Action的name和package的name和namespace的用法,以及extends属性
- namespace的用法
- struts.xml中package元素的namespace属性用法(struts2.2.1.1)
- thinkphp3.2 namespace及use用法
- php中namespace及use用法分析