c++中namespace的用法
2017-03-20 18:35
393 查看
首先,在了解namespace的用法前,我们需要了解下为什么程序中要用到namespace.看以下的代码:
可以看到,在a1.h和a2.h中我们定义了相同名称的类(实际情况中相同名字的类的成员不一定相同),在主程序中我们又同时包含了这两个头文件,在执行的时候就会发现,编译器报错.重复定义了A
如果这两个类的作用不同但是名称相同,又不能随意改动其中任何一个的名字时,我们该怎么办?这时候我们就需要用到了namespace
命名空间(namespace):实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。
打个比方,计科1班有个人叫小明,二班也有个人叫小明,把班级比作不同的头文件a1.h和a2.h,则这两个班的小明就是头文件中同名的变量或者类.如果老师需要叫其中一个小明怎么办呢?很简单,只要在小明前加上他的班级就行了,也就是1班的小明或者2班的小明.所以我们使用namespace时也是一样的.
以下的代码显示了如何使用namespace:
此时,再执行程序就编译器就不会报错了.
由此可见,namespace其实是拓展了程序的容错性,尤其是在多人合作写程序时,难免每人的程序段中出现同名的变亮,此时namespace就很好的避免了因为不同文件中的重名变量而导致的错误.
//a1.h #ifndef A1_H #define A1_H using namespace std; class A{//定义了类A public: void fun(){//类的成员函数fun } }; #endif // A1_H //a2.h #ifndef A2_H #define A2_H using namespace std; class A{//也定义了一个A public: void fun1(){//定义了它的成员函数fun1 } }; #endif // A2_H //main.cpp #include <iostream> #include"a1.h" #include"a2.h" using namespace std; int main(int argc, char *argv[]) { A a; cout << "Hello World!" << endl; return 0; }
可以看到,在a1.h和a2.h中我们定义了相同名称的类(实际情况中相同名字的类的成员不一定相同),在主程序中我们又同时包含了这两个头文件,在执行的时候就会发现,编译器报错.重复定义了A
如果这两个类的作用不同但是名称相同,又不能随意改动其中任何一个的名字时,我们该怎么办?这时候我们就需要用到了namespace
命名空间(namespace):实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。
打个比方,计科1班有个人叫小明,二班也有个人叫小明,把班级比作不同的头文件a1.h和a2.h,则这两个班的小明就是头文件中同名的变量或者类.如果老师需要叫其中一个小明怎么办呢?很简单,只要在小明前加上他的班级就行了,也就是1班的小明或者2班的小明.所以我们使用namespace时也是一样的.
以下的代码显示了如何使用namespace:
//a1.h #ifndef A1_H #define A1_H using namespace std; namespace A1 {//在a1.h中定义了一个命名空间A1 class A{//在命名空间A1中申明类A public: void fun(){ } }; } #endif // A1_H //a2.h #ifndef A2_H #define A2_H using namespace std; namespace A2 {//在a2.h中定义了命名空间A2 class A{//在空间A2中申明了一个与a1.h中的同名 类A public: void fun1(){ } }; } #endif // A2_H //main.cpp #include <iostream> #include"a1.h" #include"a2.h" using namespace std; int main(int argc, char *argv[]) { A1::A a;//用命名空间A1中声明的A类定义a cout << "Hello World!" << endl; return 0; }
此时,再执行程序就编译器就不会报错了.
由此可见,namespace其实是拓展了程序的容错性,尤其是在多人合作写程序时,难免每人的程序段中出现同名的变亮,此时namespace就很好的避免了因为不同文件中的重名变量而导致的错误.
相关文章推荐
- C++ namespace的用法
- C++中namespace的用法
- c++ 中的 namespace 用法 4000
- C++中的namespace用法
- C++ namespace 的一种用法
- namespace in c++用法详解
- C++中的namespace的用法
- C++ namespace的用法
- C++ 命名空间namespace的各种用法
- C++ 之namespace常见用法
- C++ using namespace std 用法深入解析
- C++ using namespace std 用法深入解析
- c++ namespace简单用法
- c++中“计时器”、“sort”、“namespace”函数的用法
- C++中namespace的用法
- C++中的namespace用法
- C++中namespace的用法
- C++中的namespace用法
- (转载)C++ using namespace std 用法深入解析
- C++ namespace的用法