Rules for virtual function: 1. The virtual functions must be members of some class. 2. They cannot be static members. 3. They are accessed by using object pointers. 4. A virtual function can be a friend of another class. 5. A virtual function in a base class must be defined, even though it may not be used. 6. The prototypes of the base class version of a virtual function and all the derived class versions must be identical. 7. We cannot have virtual constructors, but we can have virtual destructors. 8. While a base pointer can point to any type of the derived object, the reverse is not true. 9. When a base pointer points to a derived class, incrementing or decrementing it will not make it to point to the next object of the derived class. 10. If a virtual function is defined in the base class, it need not be necessarily redefined in the derived class.