內(nèi)部連接:假如一個(gè)名稱對于他的編譯單元來說是局部的,并且在連接時(shí)不會(huì)和其他編譯單元中的同樣的名稱相沖突,那么這個(gè)名稱有內(nèi)部連接(注:有時(shí)也將聲明看作是無連接的,這里我們統(tǒng)一看成是內(nèi)部連接的)。
以下情況有內(nèi)部連接:
a)任何的聲明
b)名字空間(包括全局名字空間)中的靜態(tài)自由函數(shù)、靜態(tài)友元函數(shù)、靜態(tài)變量的定義
c)enum定義
d)inline函數(shù)定義(包括自由函數(shù)和非自由函數(shù))
e)類的定義
f)名字空間中const常量定義
g)union的定義
外部連接:在一個(gè)多文檔程式中,假如一個(gè)名稱在連接時(shí)能夠和其他編譯單元交互,那么這個(gè)名稱就有外部連接。
以下情況有外部連接:
a)類非inline函數(shù)總有外部連接。包括類成員函數(shù)和類靜態(tài)成員函數(shù)
b)類靜態(tài)成員變量總有外部連接。
c)名字空間(包括全局名字空間)中非靜態(tài)自由函數(shù)、非靜態(tài)友元函數(shù)及非靜態(tài)變量