據我瞭解,基本類型是標量和數組是聚合的,但用戶定義的類型呢?按照什麼標準將他們分成兩類?什麼是C++中的標量對象?
struct S { int i; int j };
class C { public: S s1_; S s2_ };
std::vector<int> V;
std::vector<int> *pV = &v;
據我瞭解,基本類型是標量和數組是聚合的,但用戶定義的類型呢?按照什麼標準將他們分成兩類?什麼是C++中的標量對象?
struct S { int i; int j };
class C { public: S s1_; S s2_ };
std::vector<int> V;
std::vector<int> *pV = &v;
短版:類型在C++有:
對象類型:標量,數組,類,工會
引用類型
函數類型
(會員類型)[見下文]
void
龍版
對象類型
標量
算術(積分,浮點)
指針:T *
對於任何類型的T
枚舉
指針到構件
nullptr_t
陣列:T[]
或T[N]
任何完整的,非引用類型T
類:class Foo
或struct Bar
瑣碎類
骨料
POD類
(等等等)
聯盟:union Zip
參考文獻類型:T &
,T &&
對於任何對象或無功能型T
函數類型
個免費功能:R foo(Arg1, Arg2, ...)
成員函數:R T::foo(Arg1, Arg2, ...)
void
會員類型的工作方式。成員類型的格式爲T::U
,但不能有成員類型的對象或變量。您只能有會員指針。成員指針的類型爲T::* U
,如果U
是(自由)對象類型,則它是指向成員對象的指針;如果U
是(免費)函數類型,則指向成員函數。
除了void
,未分類的數組和未定義的類和聯合聲明以外,所有類型都是完整的。除void
之外的所有不完整類型均可完成。
所有類型可以是const
/volatile
合格。
<type_traits>
標頭提供特徵類來檢查這些類型特徵中的每一個。
我認爲這將是一個比較全面的答案:
原稿:
http://howardhinnant.github.io/TypeHiearchy.pdf
標是一個根本不同的是它不能是空的,但它可以是一個指針類型或枚舉類型。
和根本上有一個關鍵字在語言。當這樣說的時候很容易識別。
有一系列庫類用於測試變量的類型。可以使用std::is_scalar
來測試對象是否是標量。
甲標量類型是已經內置功能的加法運算符不重載(算術,指針,指針構件,枚舉和
std::nullptr_t
)一個類型。
也是從here的表。
我想你可能想,如果你想 – tletnes 2013-02-11 22:19:23
你的意思是「類型」有用的答案和「聚合」來清理你的入門款的拼寫和語法,並可能expanind一下就可以了? – us2012 2013-02-11 22:19:36
@ us2012:「Tapes and Arrogates」應該是獨立的大學樂隊。 – 2013-02-11 22:36:27