2014-09-18 39 views

回答

4

號在運行時有一個編譯時間常數的值,你就創建了一個新的對象之間沒有什麼區別。差異只在編譯時才存在。

您唯一能做的就是檢查對象是否與已知的編譯時間常量相同。 在這種情況下, (x)=>相同(const Object(),x); 將檢測到「const Object()」對象與在運行時創建的任何「new Object()」不同。只有在編寫函數時知道所有編譯時間常量纔有效,所以它可能沒有用處。即使使用鏡像來查看所有頂級/靜態「const」聲明也不會找到所有常量(並且可能會很浪費)。

你試圖解決什麼問題,你需要這個功能?

+0

在我的情況下,用戶只能使用編譯時常量,因爲我依賴的事實是具有相同參數的對象是相同的。所以我想警告用戶,如果傳入的對象不是編譯時常量。 – 2014-09-19 17:18:17

+0

如果它們是你自己的類的實例,你可以讓你的構造函數只返回規範化的實例。這意味着有一組已經創建的對象,當你嘗試創建一個新對象時,工廠構造函數會查看該對象是否已經存在,如果是,則返回該對象,否則將調用私有構造函數來創建新對象,並在返回之前將其插入到集合中。要小心,因爲這意味着所有的實例永遠存活,永遠不會被垃圾收集。 – lrn 2014-09-19 19:31:46

相關問題