最早看到pod(plain old data)型別,是在imperfect c++裡。我覺得這是一本把我帶到c++世界裡的一本很重要的書。
書裡是這樣解釋pod的:
1、 所有標量型別(基本型別和指標型別)、pod結構型別、pod聯合型別、以及這幾種型別的陣列、const/volatile修飾的版
本都是pod型別。
2、 pod結構/聯合型別:乙個聚合體(包括class),它的非static成員都不是pointer to class member、
pointer to class member function、非pod結構、非pod聯合,以及這些型別的陣列、引用、const/
volatile修飾的版本;
並且,此聚合體不能有使用者自定義的建構函式、析構函式、拷貝建構函式.
3、 pod型別可以具有static成員、成員typedef、巢狀struct/class定義和 成員函式/方法。
(c++標準)給出的定義:
將物件的各位元組拷貝到乙個位元組陣列中,然後再將它重新拷貝到原先的物件所佔的儲存區中,此時該物件應該具有它原來的值。
pod型別的特點:
所有pod型別都可以作為union的成員,反之,所有非pod型別都不能作為union的成員。
pod特性利用:
我們可以利用pod型別特性來判斷乙個型別是否為pod型別:
templatestruct must_be_pod;};
這個模板的意思是,只要型別t是非pod型別,那麼編譯器將報錯,因為t被作為了union的乙個成員。
vs2008裡的測試**如下:
class a
void f()
protected:
private:
int i;
int j;
};templatestruct must_be_pod;};
must_be_poda; 編譯器會報錯:1>member 'must_be_pod::noname' of union 'must_be_pod::' has user-defined constructor or non-trivial default constructor
其實pod本質就是與c相容的資料型別。
關於C 中的POD型別
pod型別 plain old data 我第一次是在morden c design中看到的。說實話這確實是一本好書,裡面的技巧讓人嘆為觀止。裡面提到了pod型別,該型別相容c語言的struct,主要的用處是,pod物件 特別是陣列 在進行複製的時候,不必呼叫物件的複製建構函式或者operator ...
關於C 中的POD型別
最近碰到筆試題中有關於pod型別的問題,看了好多部落格對此還是沒有理解透徹,總結在此便於日後學習.pod全稱plain old data。通俗的講,乙個類或結構體通過二進位制拷貝後還能保持其資料不變,那麼它就是乙個pod型別。平凡的定義 1.有平凡的建構函式 2.有平凡的拷貝建構函式 3.有平凡的移...
關於C 中POD型別的解析
c 98 1.8 5 給出的定義 將物件的各位元組拷貝到乙個位元組陣列中,然後再將它重新拷貝到原先的物件所佔的儲存區中,此時該物件應該具有它原來的值。imperfect c 一書中給出的定義和一些特性利用 1 所有標量型別 pod結構型別 pod聯合型別 以及這幾種型別的陣列 const volat...