const_cast(expression) The const_cast() is used to add/remove const(ness) (or volatile-ness) of a variable.
static_cast(expression) The static_cast() is used to cast between the integer types. ‘e.g.’ char->long, int->short etc.
Static cast is also used to cast pointers to related types, for example casting void* to the appropriate type.
Dynamic cast is used to convert pointers and references at run-time, generally for the purpose of casting a pointer or reference up or down an inheritance chain (inheritance hierarchy).
Reinterpret cast simply casts one type bitwise to another. Any pointer or integral type can be casted to any other with reinterpret cast, easily allowing for misuse. For instance, with reinterpret cast one might, unsafely, cast an integer pointer to a string pointer.