C++中namespace和class的区别
2016-07-11 09:58
561 查看
class和namespace都是名称空间
但是class是封闭的,也就是class只能有一个头文件
namespace是开放的,特可以在多个文件里向同一个namespace里面添加东西,例如stl里面的东西都在名字空间std里面,但却定义在了多个文件里面。
class做名称空间时,与namespace形式上类似
但是namespace是开放的,可以追加内容,而class是一次性的
另外,对class A的成员M用A::M并不总是允许的,这种方法只在两种情况写有效:
1.类的成员函数引用本类(含祖先类)的成员
2.其它函数引用类的静态成员
因为类中定义了一个(非静态)成员变量,并没有定义实体,只是定义了一个名字。只有创建了类的实例(对象),成员变量的实体才存在。
但是namespace不存在这个问题,因为namespace中定义的变量,就是一个实体,在任何情况下(只要在可见域内)。对namespace A,A::M的写法都是允许的。
但是class是封闭的,也就是class只能有一个头文件
namespace是开放的,特可以在多个文件里向同一个namespace里面添加东西,例如stl里面的东西都在名字空间std里面,但却定义在了多个文件里面。
class做名称空间时,与namespace形式上类似
但是namespace是开放的,可以追加内容,而class是一次性的
另外,对class A的成员M用A::M并不总是允许的,这种方法只在两种情况写有效:
1.类的成员函数引用本类(含祖先类)的成员
2.其它函数引用类的静态成员
因为类中定义了一个(非静态)成员变量,并没有定义实体,只是定义了一个名字。只有创建了类的实例(对象),成员变量的实体才存在。
但是namespace不存在这个问题,因为namespace中定义的变量,就是一个实体,在任何情况下(只要在可见域内)。对namespace A,A::M的写法都是允许的。
相关文章推荐
- c语言==简介及相关常识(3)
- .c和.cpp 的 区别
- C语言断言(assert)小结
- C学习笔记(一) C语言和汇编语言的区别
- c++库
- Java CRC 16位校验算法(仿C++)
- c++工作宝贵经验呀,我去。。。。
- 嵌入式开发为什么选择C语言
- 红黑树
- C++中的单例模式
- string 类型字符替换
- C语言lstat()函数:由文件描述词取得文件状态
- C语言fstat()函数:由文件描述词取得文件状态
- 转(Dlite)LLVM IR和C/C++函数相互调用时的注意事项
- C++11 | 正则表达式(2)
- c++中STL库简介及使用说明
- c++中STL库简介及使用说明
- 嵌入式C学习笔记(三)嵌入式开发选择C语言的原因
- C++ STL :vector 用法
- 清除scanf中的缓存