Rule: Static variables are never polymorphic.
Note carefully that slicing does not occur with references or with pointers:
A & referenceToA = instanceOfB;
referenceToA.whoAmI(); // will print class B
B * pointerToB = new B();
A * pointerToA = pointerToB();
pointerToA -> whoAmI(); // will print class B
Slicing only occurs with objects that are stack resident : C++ programs make the majority of their objects heap resident.