非成員、靜態成員、全域函式
盡量將非成員函式放在名稱空間中;應盡量避免使用全域範圍的函式(即不屬於任何名稱空間的函式)。 請不要單純為了組合靜態函式而創建一個類別。 類別的靜態函式一般來說應該要與類別的實例或者靜態資料有高度相關。
優點
非成員及靜態成員函式在某些狀況下很有用。 將非成員函式放在名稱空間中可以避免汙染全域的名稱空間。
缺點
非成員及靜態成員函式也許作為某個類別中的成員會更合理,特別是當它們需要存取外部資源或具有較高的相依性時。
決定
有時候定義一個不受類別實例綁住的函式很有用。 這樣的函式可以是靜態成員或者非成員函式。 非成員函式不應該依賴在某個外部變數上,而且應該幾乎都放在某個名稱空間內。 不要為了將一組靜態成員歸類而建立類別,這與直接在函式名稱前加上相同前綴並無不同,而這種做法通常沒有必要。
如果你定義了一個非成員函式,而且它只需要用在它所屬的 .cc
檔中,請使用 內部鏈結 來限制它的作用域。