static_cast
In C++ type conversion, the static_cast
operator performs an explicit type conversion.[1]
Syntax
static_cast<type> (object);
The type parameter must be a data type to which object can be converted via a known method, whether it be a builtin or a cast. The type can be a reference or an enumerator.
All types of conversions that are well-defined and allowed by the compiler are performed using static_cast
.[2]
The static_cast<>
operator can be used for operations such as:
- converting a pointer of a base class to a pointer of a non-virtual derived class;
- converting numeric data types such as enums to ints or ints to floats.
Although static_cast
conversions are checked at compile time to prevent obvious incompatibilities, no run-time type check is performed that would prevent a cast between incompatible data types, such as pointers. Also, the result of a static_cast
from a pointer of a virtual base class to a pointer of a derived class is undefined.
See also
- dynamic cast
- reinterpret_cast
- const_cast
- duration_cast
References
- Programming: Principles and Practice Using C++. New Jersey, US: Addison-Wesley. 2009. p. 594. ISBN 0321543726. OCLC 988823060.
- Eckel, Bruce (2000). Thinking in C++. New Jersey, US: Prentice Hall. p. 857. ISBN 0-13-979809-9.