什么是C++中的标量对象?
据我了解,基本类型是标量和数组是聚合的,但用户定义的类型呢?按照什么标准将他们分成两类?什么是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