Contents
Section 15.2 Defining Base and Derived Classes
Section 15.3 Virtual Functions
Section 15.4 Abstract Base Classes
Section 15.5 Access Control and Inheritance
Section 15.6 Class Scope under Inheritance
Section 15.7 Constructors and Copy Control
Section 15.8 Containers and Inheritance
Section 15.9 Text Queries Revisited
Object-oriented programming is based on three fundamental concepts: data abstraction, which we covered in Chapter 7, and inheritance and dynamic binding, which we’ll cover in this chapter.
Inheritance and dynamic binding affect how we write our programs in two ways: They make it easier to define new classes that are similar, but not identical, to other classes, and they make it easier for us to write programs that can ignore the details of how those similar types differ.
Many applications include concepts that are related to but slightly different from one another. For example, our bookstore might offer different pricing strategies for different books. Some books might be sold only at a given price. Others might be sold subject to a discount. We might give a discount to purchasers who buy a specified number of copies of the book. Or we might give a discount for only the first few copies purchased but charge full price for any bought beyond a given limit, and so on. Object-oriented programming (OOP) is a good match to this kind of application.