types and typecasts in c++
Every C++ Variable  needs a name and to know what kind of data  is stored as zero and ones in a portion of memory. We do not need to know where in memory the value is stored, because we can refer to the value by name, the identifier.
booltrue or false
- Floating Point
- Double Floating Point
- Wide Character
Note: Like in C, the width of integers are not fixed
One Solution is to use a type with a fixed width, for example: when you need a 64bit integer type, use int64_t or uint64_t.
nullptr keyword is usable without including the header
<cstddef>, unless you must use
- Typedef -
typedefis to declare types
class in C++ is inspired by Simula (mathematicans).
Structures are like Classes. Compared to Classes, they are identical, except Structs have public members and public inheritance by default.
<typeinfo> may return a mangled name, but can be used to debug.
Cast is to convert between types:
- C-Style Cast
- Remove const-cast
compile-time cast, no runtime check.
Casting away the constness of a read-only const variable. 
Warning: Think before you use C-Style Casts, prefer a
static_castwhich is explicit and easier to find
In C++ the C-Style Cast is accepted by the Compiler as long as a
reintepret_cast or a combination is applicable . This can for example led to Compiler-Portability Issues.
polymorphic cast on Runtime. For Example for downcasts (from base to derived class) and crosscasts (accross the object hierarchy) of pointers to polymorphic objects.
Beyond the C++ Standard Library: Boost provides also polymorphic casts .