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 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access