static_cast (C++ typecast Operator)
Go Up to Keywords, Alphabetical Listing Index
static_cast< T > (arg)
In the statement, static_cast< T > (arg), T must be a pointer, reference, arithmetic type, or enum type. Both T and arg must be fully known at compile time.
If a complete type can be converted to another type by some conversion method already provided by the language, then making such a conversion by using static_cast achieves exactly the same thing.
Integral types can be converted to enum types. A request to convert arg to a value that is not an element of enum is undefined.
The null pointer is converted to the null pointer value of the destination type, T.
A pointer to one object type can be converted to a pointer to another object type. Note that merely pointing to similar types can cause access problems if the similar types are not similarly aligned.
You can explicitly convert a pointer to a class X to a pointer to some class Y if X is a base class for Y. A static conversion can be made only under the following conditions:
- If an unambiguous conversion exists from Y to X.
- If X is not a virtual base class.
An object can be explicitly converted to a reference type X& if a pointer to that object can be explicitly converted to an X*. The result of the conversion is an lvalue. No constructors or conversion functions are called as the result of a cast to a reference.
An object or a value can be converted to a class object only if an appropriate constructor or conversion operator has been declared.
A pointer to a member can be explicitly converted into a different pointer-to-member type only if both types are pointers to members of the same class or pointers to members of two classes, one of which is unambiguously derived from the other.
When T is a reference, the result of static_cast< T > (arg) is an lvalue. The result of a pointer or reference cast refers to the original expression.