Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
612 views
in Technique[技术] by (71.8m points)

types - What is a scalar Object in C++?

As far as I understand it fundamental types are Scalar and Arrays are aggregate but what about user defined types? By what criteria would I divide them into the two categories?

struct S { int i; int j };
class C { public: S s1_; S s2_ };
std::vector<int> V;
std::vector<int> *pV = &v;
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Short version: Types in C++ are:

  • Object types: scalars, arrays, classes, unions

  • Reference types

  • Function types

  • (Member types) [see below]

  • void


Long version

  • Object types

    • Scalars

      1. arithmetic (integral, float)

      2. pointers: T * for any type T

      3. enum

      4. pointer-to-member

      5. nullptr_t

    • Arrays: T[] or T[N] for any complete, non-reference type T

    • Classes: class Foo or struct Bar

      1. Trivial classes

      2. Aggregates

      3. POD classes

      4. (etc. etc.)

    • Unions: union Zip

  • References types: T &, T && for any object or free-function type T

  • Function types

    • Free functions: R foo(Arg1, Arg2, ...)

    • Member functions: R T::foo(Arg1, Arg2, ...)

  • void

Member types work like this. A member type is of the form T::U, but you can't have objects or variables of member type. You can only have member pointers. A member pointer has type T::* U, and it is a pointer-to-member-object if U is a (free) object type, and a pointer-to-member-function if U is a (free) function type.

All types are complete except void, unsized arrays and declared-but-not-defined classes and unions. All incomplete types except void can be completed.

All types can be const/volatile qualified.

The <type_traits> header provides trait classes to check for each of these type characteristics.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...