2
A
回答
5
靜態成員函數只是普通的(非成員)函數。你知道普通功能對你有什麼好處嗎?所以,出於同樣的原因,靜態成員函數對於相同的事情是有好處的。
只是有時一個普通的函數與類有緊密的關係,所以把它聲明爲類的靜態成員是有意義的,而不是聲明它是一個完全獨立的獨立函數。它可以幫助你表達這個功能與班級之間的緊密關係。此外,這賦予了這個功能完全訪問該類內部的權限 - 私有和受保護的成員。
後者實際上能夠實現使用靜態成員函數的一些有用的編程習慣和模式。例如,搜索「靜態構造函數」習語。
0
靜態類類似的命名空間,但他們提供保護(protected和private),並且可以變成模板(是的,裸露的功能也是可以的,但也有侷限,有時做一個包裝類模板更容易,甚至必要)。
0
認爲「全球」。一個非靜態函數,就像你學習的那樣,對一個對象進行操作,而一個靜態函數被一個類的所有對象共享 - 所以......所有這些對象都有什麼共同點?
它取決於你的類,但想想「彙總信息」。考慮一下數據。想想班上所有對象的共同之處。也許每個人都有一個特定的運動總數,但是你也想要一個全局總數?沿着這些線路認爲...
0
靜態成員函數可以用於靜態,常數數據成員執行非平凡初始化。例如,你可能會在某個類中使用一個靜態的,常量的容器。可以使用靜態成員函數來創建容器的實例,該實例被返回並複製到靜態常量數據成員中。
相關問題
- 1. 靜態函數的語法是什麼?
- 2. 什麼是C#中的「靜態方法」?
- 3. C#中外部靜態構造函數的用途是什麼?
- 4. 什麼數字是最常見的?
- 5. C/C++:頭文件中的靜態函數,是什麼意思?
- 6. 非靜態類中靜態方法的要點是什麼?
- 7. 靜態函數的優點是什麼?
- 8. 非靜態類中靜態構造函數的功能是什麼?
- 9. C#中的靜態構造函數究竟是什麼?
- 10. 爲什麼P/Invoke函數在C#中是靜態的?
- 11. 靜態函數與類的靜態指針有什麼區別
- 12. 爲什麼CanvasRenderingContext2D.createLinearGradient()不是靜態函數?
- 13. 什麼是非靜態成員函數?
- 14. 爲什麼調用函數/方法重載作爲C++中的靜態多態?
- 15. 在swift類的靜態函數中訪問非靜態常量
- 16. 什麼是最常見的CSS問題?
- 17. 什麼是最常見的CSS實踐?
- 18. 什麼是最常見的EMACS命令?
- 19. C++:什麼是定義非類靜態常量值的正確方法?
- 20. C++中靜態類的用途是什麼?
- 21. 「非法使用非靜態成員函數」這是什麼?
- 22. C#靜態類爲什麼使用?
- 23. 非靜態類中的靜態方法和靜態類中的靜態方法有什麼區別?
- 24. 具有靜態方法的靜態類和具有靜態方法的常規類之間有什麼不同?
- 25. 什麼是C#中靜態事件的合法用例?
- 26. PHP中類的靜態方法/函數
- 27. 爲什麼在C++中bool和int8_t的常見類型是int32_t?
- 28. 靜態方法/函數調用同一類中的非靜態函數
- 29. 非靜態類實例中的c#靜態變量的行爲是什麼?
- 30. 什麼是C#相當於公共最後靜態的Java中
但是靜態函數無法訪問私有和受保護的成員,是嗎?它只能訪問類中的其他靜態數據?我對嗎? – bodacydo 2010-07-05 02:18:15
@bodacydo:不完全。當/如果給定指向該玻璃實例的指針時,靜態函數可以訪問該類的私有和受保護成員。靜態函數沒有隱含的this參數,所以如果你需要一個類的實例來訪問,你必須明確地將它傳遞給函數。 – AnT 2010-07-05 02:20:47
不,你不對。如果你有一個帶有靜態方法's()'和私有成員'p'的類'A',一個傳入的實例允許'()'訪問'p'。或者'()'可以實例化'A'並填充'p'。那種東西。 – 2010-07-05 02:21:40