static cast
{{Short description|C++ type conversion operator}}
{{DISPLAYTITLE:static_cast}}
In the C++ programming language, static_cast
is an operator that performs an explicit type conversion.{{cite book|title=Programming: Principles and Practice Using C++ |year=2009 |publisher=Addison-Wesley |location=New Jersey, US |isbn=978-0321543721 |page=594 |oclc=988823060 }}
Syntax
static_cast
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
.{{cite book |last=Eckel |first=Bruce |title=Thinking in C++ |year=2000 |publisher=Prentice Hall |location=New Jersey, US |isbn=0-13-979809-9 |page=857 |url-access=registration |url=https://archive.org/details/thinkinginc00ecke/page/857 }}{{Failed verification |date=July 2020 |reason=There is no page 857 in this 814-page book. Is this the right edition?}}
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 (downcasting);
- converting numeric data types such as enums to ints or floats.
Although static_cast
conversions are checked at compile time to prevent obvious incompatibilities, no run-time type checking is performed that would prevent a cast between incompatible data types, such as pointers. A static_cast
from a pointer to a class B
to a pointer to a derived class D
is ill-formed if B
is an inaccessible or ambiguous base of D
. A static_cast
from a pointer of a virtual base class (or a base class of a virtual base class) to a pointer of a derived class is ill-formed.
See also
References
{{Reflist}}
{{DEFAULTSORT:Static Cast}}