据我了解,基本类型是标量,而数组是聚合的,但用户定义的类型呢?我会根据什么标准将它们分为两类?
struct S { int i; int j };
class C { public: S s1_; S s2_ };
std::vector<int> V;
std::vector<int> *pV = &v;
最佳答案
短版: C++ 中的类型有:
对象类型:标量、数组、类、 union
引用类型
函数类型
(成员类型)[见下文]
void
加长版
对象类型
标量
算术(整数、 float )
指针:
T *
对于任何类型T
枚举
指向成员的指针
nullptr_t
数组:
T[]
或T[N]
对于任何完整的非引用类型T
类:
class Foo
或struct Bar
琐碎的类
聚合
POD 类
(等等等等)
union :
union Zip
引用类型:
T &
,T &&
对于任何对象或自由函数类型T
函数类型
免费功能:
R foo(Arg1, Arg2, ...)
成员(member)功能:
R T::foo(Arg1, Arg2, ...)
void
成员类型是这样工作的。成员类型的格式为 T::U
,但不能有成员类型的对象或变量。您只能拥有成员指针。成员指针的类型为 T::* U
, 如果 U
则它是一个指向成员对象的指针是(自由)对象类型,如果 U
则为指向成员函数的指针是一个(免费的)函数类型。
除了 void
之外的所有类型都是完整的, unsized 数组和声明但未定义的类和 union 。除 void
外的所有不完整类型可以完成。
所有类型都可以是const
/volatile
合格。
<type_traits>
header 提供了 trait 类来检查这些类型特征中的每一个。
关于c++ - 什么是 C++ 中的标量对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14821936/