c++中namespace的用法
来源:互联网 发布:淘宝店铺不存在 退货 编辑:程序博客网 时间:2024/06/04 20:07
首先,在了解namespace的用法前,我们需要了解下为什么程序中要用到namespace.看以下的代码:
//a1.h#ifndef A1_H#define A1_Husing namespace std;class A{//定义了类Apublic: void fun(){//类的成员函数fun }};#endif // A1_H//a2.h#ifndef A2_H#define A2_Husing namespace std;class A{//也定义了一个Apublic: 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_Husing namespace std;namespace A1 {//在a1.h中定义了一个命名空间A1class A{//在命名空间A1中申明类Apublic: void fun(){ }};}#endif // A1_H//a2.h#ifndef A2_H#define A2_Husing namespace std;namespace A2 {//在a2.h中定义了命名空间A2class A{//在空间A2中申明了一个与a1.h中的同名 类Apublic: 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就很好的避免了因为不同文件中的重名变量而导致的错误.
0 0
- struts2中namespace的用法
- Struts2中namespace的用法
- Struts2中namespace的用法
- Struts2中namespace的用法
- Struts2中namespace的用法
- Struts2中namespace的用法
- C++中namespace的用法
- struts2中namespace的用法
- C++中namespace的用法
- Struts2中namespace的用法
- Struts2中namespace的用法
- Struts2中namespace的用法
- c++中namespace的用法
- php中namespace和use的用法
- namespace的简单用法
- namespace 的用法
- C++ namespace的用法
- namespace的用法
- 最简单的对话框
- nginx多条件判断
- codeforces 407C Curious Array 数学
- Velocity基本语法
- 定时任务配置详解
- c++中namespace的用法
- poco c++和Boost库的对比分析
- Elasticsearch教程
- error: SEH exception with code 0xc0000005 thrown in the test
- PHP通过Http Post请求发送Json对象数据?
- 【限时免费体验】D3引擎:“拖拉拽”轻松完成数据处理开发
- 算年龄
- android developer tiny share-20170303
- iOS framework Required与Optional