通常面试不太会问到,可是比较难理解透面试
基本概念不写了感受都没啥可说的,记一个命名空间污染的问题
和一个内部连接,外部连接的问题函数
内部连接:若是一个名称对于某个编译单元来讲是局部的,在连接的时候其余的编译单元没法连接到它且不会与其余的连接单元中一样的名称相冲突。例如static函数、inline函数等。
外部连接:若是一个名称对于编译单元来讲不是局部的,在连接的过程当中其余的编译单元能够访问它。例如全局变量和普通函数(普通函数默认为extern)。
哪些实体拥有内部连接:spa
哪些实体拥有外部连接:code
所以,拥有外部连接的实体若是被声明在头文件而且被多个.cpp文件包含,可能就会出现连接冲突错误,由于每一个包含这个拥有外部连接实体的.cpp都会分配空间,当多个编译单元连接的时候,链接器就会面对多个相同的名字,没法正常连接到正确的对象。对象