2009-11-12 174 views
2

如果我有一個包含一個靜態成員變量的C++類,這個變量的訪問器方法是否也需要是靜態的?另外,如果我內聯這種方法,可能會發生任何問題嗎?靜態成員變量和方法

回答

7

它不需要需要是靜態的,但除非它正在爲某個特定的類實例做特定的事情,否則沒有真正的理由不將它設置爲靜態。

這不應該以任何方式影響內聯。

3

編寫訪問器方法的全部目的是隱藏類的某些屬性從外部用戶的實現。你想隱藏什麼,你不想隱藏什麼,只有你可以決定。像這樣的決定不能機械地做出來,如「因爲數據成員是靜態的,訪問者也應該是靜態的」。這是一個毫無希望的有缺陷的方法。

此外,編寫訪問者的要點是將用戶從關於基礎數據成員的全部(或部分)知識中分離出來。數據成員甚至可能不存在。用戶不需要知道它是否存在或不存在。數據成員本身可能在今天物理上存在,並在明天消失。用戶不應該關心這一點。這是通過強制用戶使用訪問者來實現的。

因此,在您的情況下,通過使訪問器處於靜態狀態,您可以自動聲明並公開相應屬性特定於整個類而不是該類的特定對象的事實。再一次請注意,數據成員的靜態性與此無關:沒有人會知道或關心該訪問器後面是否有物理數據成員。

通過使訪問器非靜態,您自動聲明並公開屬性可能特定於該類的特定對象的事實。

這是什麼應該指導你的決定。您沒有提供有關該物業的足夠詳細信息,因此我們無法幫您在此做出決定。