命名空间三语言对比:C++ namespace、Python 模块与 Java 包
一、概念引入:命名冲突是怎么来的写代码写到一定规模,几乎人人都会撞上同一个尴尬: 两个第三方库都定义了一个 connect(),你 #include 进来、或者 import 进来,一调用——编译器报"重定义"、解释器静默覆盖、或者 IDE 里一片飘红。名字没变,含义变了,程序行为就跟着崩。 这就是命名冲突(name collision):当多个名字相同、含义不同的实体被塞进同一个"符号空间",编译器或解释器就无法区分它们。 解决思路其实很朴素——给每个名字加一个"前缀",把一个大空间拆成若干互不干扰的小格子。这个"格子"就是命名空间(namespace): 全局符号空间(无命名空间时) connect() 库 A 的实现 connect() 库 B 的实现 冲突! ↓ 加前缀,拆格子 ↓ netA::connect() netB::connect() 自己的 connect() 三巨头语言各自给这个"...

