Chapter 29. Are Virtual Functions for Real?

In This Chapter

  • Overriding between functions that are members of a class

  • Introducing virtual member functions

  • Some special considerations for virtual functions

  • Declaring your destructor virtual — when to and when not to do it

Inheritance gives users the ability to describe one class in terms of another. Just as important, it highlights the relationship between classes. I describe a duck as "a bird that ...", and that description points out the relationship between duck and bird. From a C++ standpoint, however, a piece of the puzzle is still missing.

You have probably noticed this, but a microwave oven looks nothing like a conventional oven and nor does it work the same internally. Nevertheless, when I say "cook," I don't want to worry about the details of how each oven works internally. This chapter describes this problem in C++ terms and then goes on to describe the solution as well.

Overriding Member Functions

It has always been possible to overload a member function with another member function in the same class as long as the arguments differ:

class Student
{
  public:
    double grade();     // return the student's gpa
    double grade(double); // set the student's gpa

    // ...other stuff...
};

You see this in spades in Chapters 26 and 27 where I overload the constructor with a number of different types of constructors. It is also possible to overload a function in one class with a function in another class even if the arguments are the same, because the class ...

Get Beginning Programming with C++ For Dummies® now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.