通常面試不太會問到,可是比較難理解透面試
基本概念不寫了感受都沒啥可說的,記一個命名空間污染的問題
和一個內部連接,外部連接的問題函數
內部連接:若是一個名稱對於某個編譯單元來講是局部的,在連接的時候其餘的編譯單元沒法連接到它且不會與其餘的連接單元中一樣的名稱相沖突。例如static函數、inline函數等。
外部連接:若是一個名稱對於編譯單元來講不是局部的,在連接的過程當中其餘的編譯單元能夠訪問它。例如全局變量和普通函數(普通函數默認爲extern)。
哪些實體擁有內部連接:spa
哪些實體擁有外部連接:code
所以,擁有外部連接的實體若是被聲明在頭文件而且被多個.cpp文件包含,可能就會出現連接衝突錯誤,由於每一個包含這個擁有外部連接實體的.cpp都會分配空間,當多個編譯單元連接的時候,鏈接器就會面對多個相同的名字,沒法正常連接到正確的對象。對象