編程語言是否絕對有必要保存類信息(例如在Objective-C 2字節中)以瞭解「規範」(例如,Integer
:4字節; String
:8字節; ...)的object
?
由於多態性,程序必須在運行時檢查對象是否有正確的type
(對於方法;消息)正確嗎?
消耗這麼多資源?主要是因爲你爲了維持適當的結構,創造更多的類...OOP一般 - RAM中的類信息
回答
這是絕對必要的。一個類的對象(即引用)存儲在RAM中。它使用了一個非常小的號碼。 f字節,因爲它只存儲內存地址。
檢查不會發生運行時,它發生在編譯期間。這不會導致任何額外的內存使用。創建類,方法不增加內存使用量,但(如果只是稍微)增加編譯時間。存儲數據(對象/引用,數字,字符串等)使用內存。只有在創建對象時,語言機器纔會分配和使用內存。
是這是絕對必要
號
例如,默認情況下,C++不存儲任何類型的信息。每個對象只需存儲一個pointer to a table of function pointers,以實現虛函數調用。
在C++中,默認情況下所有類型檢查都是在編譯時完成的。如果你開始做「有趣」的事情,如dynamic_cast
,這需要運行時類型檢查,並因此將類型信息存儲在對象中,這隻會改變。
但是:它保存了標識對象的「東西」...... –
@LucaNateMahler:是的,但並不是說你的問題被問到;它不用於「在運行時檢查對象是否具有正確的類型」。 –
所以我們可以肯定地說,OOP比原語的語言浪費更多的內存嗎? –
- 1. PGM和WebGL一般信息
- 2. LLVM和CLANG - 一般信息
- 3. 抽象類VS枚舉(一般OOP)
- 4. 接口與抽象類? (一般OOP)
- 5. 帶一些信息的iphone一般
- 6. 在Python中的類的實例的奇怪類型信息OOP
- 7. Android控制的汽車[一般信息]
- 8. 從iPhone獲取一般信息
- 9. 谷歌地圖API - 一般信息
- 10. 關於PHP OOP的更多信息 - 類內的類
- 11. 窗戶的API來獲取RAM信息
- 12. PHP OOP調用一般功能eachtime
- 13. 更改綁定信息導致VisualStudio中的一般錯誤
- 14. WMI硬件,獲取RAM信息
- 15. 對話般的信息系統
- 16. JavaScript中的一般類型
- 17. 掌握反射一般信息在Java中
- 18. 一般用於Java中的信號量
- 19. 一個類中的靜態信息
- 20. 如何創建一個彈出窗口,顯示一般信息
- 21. 一般信息開始...創建一個SIP客戶端
- 22. 程序在java中獲取有關Ram的信息
- 23. Node.js創建一個模塊來收集內存(RAM)信息?
- 24. 從資源項目的asp.net cookie(+一般信息)
- 25. 將先前分配信息輸入功能的一般方法?
- 26. 有關WPF及其XAML的一般信息
- 27. 上一個信息類
- 28. 消息框一般問題
- 29. PHP中的未定義屬性錯誤信息OOP
- 30. 正在檢索數據庫中的表信息OOP
但是如何知道程序如何在參考後建立數據? 「某事」必須標識一個對象,不管是對象的附加類信息還是整個類池。 –
d程序不需要知道。編譯器檢查過,一切正常,並且沒有不正確的方法調用或不正確的引用(或對象) – vedant1811