class A { // definitions }; class B : public A { // definitions };
Given this definition, we can perform two types of up casting. The first one deals with pointers, whereas the second one deals with references.
B myB; A &rMyA(static_cast<B&>(myB));
In this example, rMyA
becomes a reference to myB
. However, rMyA
only has
access to the class A members.
We can also cast pointers:
B myB; A *pMyA = static_cast<A*>(&myB);
In this example pMyA
becomes a pointer to myB
. Again, pMyA
only has access
to the class A members.
A static up cast can be implicitly done, like in the following code (assuming that class B is derived from class A):
{ B myB A *pA; pA = &myB; }