關於STL中trivial destroctor的小記

1、首先,trivial destroctor是指系統默認的析構函數。

例如:假設我們的類中成員變量,只包含float、int、char、double等類型,那麼析構函數並不需要做什麼操作,我們就可以不寫析構函數。(也就是說這時候的析構函數是無用的,但系統還是會調用。)

如果大量的調用無用的析構函數,會消耗資源。爲了優化效率,STL中有使用一種優化技巧。就是通過檢測析構函數是不是trivial destroctor,如果是的話,那麼就不去調用析構函數。

如果是non-trivial destroctor類型,那麼就要去調用析構函數。


在查trivial destroctor的時候,看到POD,下面是關於POD的說明。

2、關於POD的小記。

1、對於POD類型T的對象,不管這個對象是否擁有類型T的有效值。如果將該對象的底層字節序列複製到一個字符

數組(或者無符號字符數組)中,再將其複製回對象,那麼該對象的值與原始值一樣 。

2、對於任意的POD類型T,如果兩個T指針分別指向兩個不同的對象obj1和obj2。如果用memcpy庫函數把obj1的值複製到obj2,那麼obj2將

擁有與obj1相同的值。

簡言之,針對POD對象,其二進制內容是可以隨便複製的。在任何地方,只要其二進制內容存在,就能還原出正確無誤的POD對象。

對於任何POD對象,都可以使用memset()函數或者其他類似的內存初始化函數。


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