type
status
date
slug
summary
tags
category
icon
password

命名空间是啥

假设一班有三个学生,我们把这三个变量定义在文件yiban.h
二班也有三个学生:我们把这三个变量定义在文件erban.h
现在我们要用到两个文件里所有的变量(比如年级主任要点名这两个班所有人):
注意 #include "xxx"的作用就是把文件xxx里的内容原封不动复制一份到这来,那上面文件实际上等价于:
问题出现了,两个文件都有个叫xiaoming的变量,年级主任喊xiaoming的时候根本不知道是哪个班的。
 
现在年级主任为了区分,会这么喊:
一班的小明
 
这里,一班就是个命名空间,小明就是属于这个命名空间里的变量。
 
在C++里,我们也可以给他们定义一个命名空间(namespace),让外边的人知道到底是哪个班的小明。
这样我们的main函数就可以这么写:
 
一班 的 小明 在C++语法里就是 yiban::xiaoming,这里的双冒号就是“的”。
 
 

类和命名空间

上节里,定义类的成员函数的时候,我们也用到了双冒号的语法。
 
一个类定义的时候
其实也隐含了一个命名空间。毕竟类的本质就是为了封装一系列的成员,防止被外部污染。
因此在myclass.cpp文件里实现的时候要用MyClass::add()的形式。
速通C++:类继承scipy修改