《深度探索C++對象模型》讀書筆記之執行期語意學

1、  如何查看objectfiles中定義的函數和全局變量?

好吧,其實這個問題確實與執行期語意學有關。因爲編譯器需要收集每個全局變量的構造和析構函數,而其實現方式也是使用nm命令打印object file的符號表找出特定開頭的名稱。所以咯,答案是nm命令。(騰訊面試中,我曾遇到這個,當時沒答出來T_T

 

2、  operator new()placement new()new關鍵字有什麼不同?

這個答案如果認真讀過《STL源碼剖析》應該早就有自己的理解,這裏給我的理解,鏈接如下:

operator new()、placement new()與new關鍵字

 

3、  局部靜態對象是怎樣構造和使用的?

在第一個調用局部靜態對象所在的函數是構造和初始化該對象。每次調用會判斷該對象是否存在(由於object是靜態的,所以其地址會被轉換到程序內用來放置global objectdata segment中),從而避免後續調用時重複構造。而析構的行爲在文中無涉及。

 

4、  臨時對象的生存期限是怎樣的?

1、  產生該臨時對象的完整表達式,求值過程最後一個步驟完成後被摧毀。

2、  如果一個臨時性變量被綁定於一個reference,對象將殘留,直到被初始化之reference的生命結束,或直到臨時對象的生命範圍結束——視哪一種情況先到達。

備註:臨時對象不是局部對象。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章