2012-06-26 80 views
0

編程語言是否絕對有必要保存類信息(例如在Objective-C 2字節中)以瞭解「規範」(例如,Integer:4字節; String:8字節; ...)的object
由於多態性,程序必須在運行時檢查對象是否有正確的type(對於方法;消息)正確嗎?
消耗這麼多資源?主要是因爲你爲了維持適當的結構,創造更多的類...OOP一般 - RAM中的類信息

回答

1

這是絕對必要的。一個類的對象(即引用)存儲在RAM中。它使用了一個非常小的號碼。 f字節,因爲它只存儲內存地址

檢查不會發生運行時,它發生在編譯期間。這不會導致任何額外的內存使用。創建類,方法不增加內存使用量,但(如果只是稍微)增加編譯時間。存儲數據(對象/引用,數字,字符串等)使用內存。只有在創建對象時,語言機器纔會分配和使用內存。

+0

但是如何知道程序如何在參考後建立數據? 「某事」必須標識一個對象,不管是對象的附加類信息還是整個類池。 –

+0

d程序不需要知道。編譯器檢查過,一切正常,並且沒有不正確的方法調用或不正確的引用(或對象) – vedant1811

0

是這是絕對必要

例如,默認情況下,C++不存儲任何類型的信息。每個對象只需存儲一個pointer to a table of function pointers,以實現虛函數調用。

在C++中,默認情況下所有類型檢查都是在編譯時完成的。如果你開始做「有趣」的事情,如dynamic_cast,這需要運行時類型檢查,並因此將類型信息存儲在對象中,這隻會改變。

+1

但是:它保存了標識對象的「東西」...... –

+0

@LucaNateMahler:是的,但並不是說你的問題被問到;它不用於「在運行時檢查對象是否具有正確的類型」。 –

+0

所以我們可以肯定地說,OOP比原語的語言浪費更多的內存嗎? –