O'Reilly logo

Navigating C++ and Object-Oriented Design by Gail Anderson, Paul Anderson

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

11.4. Virtual Functions

It's not always possible at compile time to determine which derived object a base class pointer or reference refers to. Virtual functions provide resolution at run time. This section explores dynamic binding and its implementation with virtual functions.

Dynamic Binding

Both Person and Student have separate output() definitions that we call with objects, references, or pointers. A more natural approach overloads operator<<() to display the attributes of Person and Student objects.

ostream & operator<<(ostream & os, const Person & p) {
   p.output(os);
   return os;
}

Since the second argument matches both a Person object (exact match) and a Student object (derived to base standard conversion), this approach is appealing. Why? ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required