1) A base class pointer can point to a derived class object but cannot access the derived class's additional functions without a cast. 2) Declaring a function as virtual in the base class allows it to be overridden in derived classes and called polymorphically through a base class pointer. 3) A pure virtual function is like an abstract function that derived classes must implement. A class with a pure virtual function is an abstract class that cannot be instantiated.