c 11 pod型別 了解

2021-09-22 06:09:18 字數 1138 閱讀 3638

啥是pod型別?

pod全稱plain old data。通俗的講,乙個類或結構體通過二進位制拷貝後還能保持其資料不變,那麼它就是乙個pod型別。

平凡的定義

1.有平凡的建構函式

2.有平凡的拷貝建構函式

3.有平凡的移動建構函式 4.有平凡的拷貝賦值運算子 5.有平凡的移動賦值運算子 6.有平凡的析構函式 7.不能包含虛函式 8.不能包含虛基類 [cpp] view plaincopy在code上檢視**片派生到我的**片 #include "stdafx.h"#include using namespacestd; classa }; class b }; class c }; class d }; class e }; class f }; class g ; classh : g {}; classi {}; int _tmain(int argc, _tchar*ar**) 執行結果 標準布局的定義 1.所有非靜態成員有相同的訪問許可權 2.繼承樹中最多只能有乙個類有非靜態資料成員 3.子類的第乙個非靜態成員不可以是基類型別 4.沒有虛函式 5.沒有虛基類 6.所有非靜態成員都符合標準布局型別 [cpp] view plaincopy在code上檢視**片派生到我的**片 #include "stdafx.h"#include using namespacestd; classa ; classb1 ; classb2 ; classb : b1, b2 ; classc1 {}; classc : c1 ; class d ; classe : d {}; classf ; int _tmain(int argc, _tchar*ar**) 執行結果 pod的使用 當乙個資料型別滿足了」平凡的定義「和」標準布局「,我們則認為它是乙個pod資料。可以通過std::is_pod來判斷乙個型別是否為pod型別。 如文章開頭說的,乙個pod型別是可以進行二進位制拷貝的,看看下面的例子。 [cpp] view plaincopy在code上檢視**片派生到我的**片 #include "stdafx.h"#include #include using namespacestd; classa ; int _tmain(int argc, _tchar*ar**) system("pause"); return 0; } 執行結果

可以看到,對乙個pod型別進行二進位制拷貝後,資料都成功的遷移過來了。

C 11 POD資料型別

1.有平凡的建構函式 2.有平凡的拷貝建構函式 3.有平凡的移動建構函式 4.有平凡的拷貝賦值運算子 5.有平凡的移動賦值運算子 6.有平凡的析構函式 7.不能包含虛函式 8.不能包含虛基類 cpp view plain copy include stdafx.h include using nam...

C 11新特性之POD型別

pod plain old data 是c 中非常重要的乙個概念,用來描述乙個型別的屬性其中plain表示這個型別是個平凡的型別,old表示其與c的相容性。c 11中將pod劃分為兩個基本概念 平凡的 trival 和標準布局 standardlayout 什麼是平凡性呢?通常乙個平凡的類或者結構體...

c 的POD型別詳解

最早看到pod plain old data 型別,是在imperfect c 裡。我覺得這是一本把我帶到c 世界裡的一本很重要的書。書裡是這樣解釋pod的 1 所有標量型別 基本型別和指標型別 pod結構型別 pod聯合型別 以及這幾種型別的陣列 const volatile修飾的版 本都是pod...