如果我有一個包含一個靜態成員變量的C++類,這個變量的訪問器方法是否也需要是靜態的?另外,如果我內聯這種方法,可能會發生任何問題嗎?靜態成員變量和方法
2
A
回答
7
它不需要需要是靜態的,但除非它正在爲某個特定的類實例做特定的事情,否則沒有真正的理由不將它設置爲靜態。
這不應該以任何方式影響內聯。
3
編寫訪問器方法的全部目的是隱藏類的某些屬性從外部用戶的實現。你想隱藏什麼,你不想隱藏什麼,只有你可以決定。像這樣的決定不能機械地做出來,如「因爲數據成員是靜態的,訪問者也應該是靜態的」。這是一個毫無希望的有缺陷的方法。
此外,編寫訪問者的要點是將用戶從關於基礎數據成員的全部(或部分)知識中分離出來。數據成員甚至可能不存在。用戶不需要知道它是否存在或不存在。數據成員本身可能在今天物理上存在,並在明天消失。用戶不應該關心這一點。這是通過強制用戶使用訪問者來實現的。
因此,在您的情況下,通過使訪問器處於靜態狀態,您可以自動聲明並公開相應屬性特定於整個類而不是該類的特定對象的事實。再一次請注意,數據成員的靜態性與此無關:沒有人會知道或關心該訪問器後面是否有物理數據成員。
通過使訪問器非靜態,您自動聲明並公開屬性可能特定於該類的特定對象的事實。
這是什麼應該指導你的決定。您沒有提供有關該物業的足夠詳細信息,因此我們無法幫您在此做出決定。
相關問題
- 1. 從靜態方法訪問非靜態成員變量
- 2. 顯式訪問靜態成員變量在靜態成員方法 - 在C++
- 3. 靜態成員變量
- 4. C++:靜態成員變量
- 5. 靜態變量與成員
- 6. 靜態成員變量
- 7. C++靜態成員變量
- 8. 靜態方法和靜態變量是否被JLS視爲類成員?
- 9. C++靜態成員函數和變量
- 10. 指針到成員和靜態變量
- 11. 靜態變量和方法
- 12. 靜態方法和變量
- 13. 方法 - 靜態成員
- 14. 靜態矢量成員變量
- 15. 內存中的靜態成員和靜態全局變量
- 16. PHP:如何從靜態方法獲取類成員變量?
- 17. 從靜態方法訪問成員變量?
- 18. 如何在靜態方法中調用類的成員變量?
- 19. 將靜態方法輸出分配給靜態成員變量在php
- 20. C++:靜態成員函數和變量 - 重新定義靜態變量?
- 21. 靜態Vs非靜態方法和成員交互
- 22. 爲什麼初始化非const和靜態const成員變量而不是靜態成員變量?
- 23. 靜態成員變量分配時間
- 24. 問題有關靜態成員變量
- 25. 命名空間(靜態)成員變量
- 26. 靜態成員變量初始化C++
- 27. 靜態成員變量出口
- 28. 獲取類的靜態成員變量
- 29. C++私有靜態成員變量
- 30. 靜態成員變量賦值