<NOSCRIPT><A href="http://about.com/" target=_blank><IMG src="C++ Tutorial - Lesson 32 Virtual Inheritance_files/0.gif" border=0></A></NOSCRIPT>   About > Computing & Technology > C/C++ 
Search     
 Hi, I'm John Kopp, your guide to C, C++ and C# programming. This site provides what you need to know to learn C, C++ or C# programming. Browse the subjects on the left, try one of the tutorials or use the search box to get started.

C/C++

with John Kopp
Your Guide to one of hundreds of sites
 Home · Articles · Forums · Chat · Newsletters · Help    
Subjects

  ESSENTIALS
· C Tutorial
· C++ Tutorial
· C/C++ Glossary
· Tips
· More Tutorials
  BUYER'S GUIDE

Product Reviews
Top Picks
C Tutorials
C++ Tutorials
C#
Advanced C
Advanced C++
Beginning C
Beginning C++
Books
C++ Builder
Careers
CGI
CM
Dictionaries
CompilingDebugging
Freeware/Shareware
Humor
Magazines
OOAD
Polls
SoftwareEngineer'n
Style
STL
UNIX/GNU
Visual C++

Subject Library

All articles on this topic

 

Stay up-to-date!
Subscribe to our newsletter.

Web Hosting
Global Servers

 
 
 
Advertisement
> Free Credit Report
 
C++ Tutorial - Lesson 32: Virtual Inheritance
 More of this Feature
• Introduction
• Problems with Multiple Inheritance
• Explicitly Specifying Base Classes
• Chaining Up
• Virtual Inheritance
• Virtual Inheritance, continued
 
 Related Resources
• Inheritance
• Polymorphism
• Multiple Inheritance
• Advanced C++ Tutorials
• Simple Solutions in C++
• C++ Programming Tips
• C++ Tutorial, See all lessons
 

by John Kopp

Introduction
Welcome to About.com's free tutorial on C++ programming. This lesson covers some ambiguities that can arise with multiple inheritance, and their solutions, including virtual inheritance. We will begin this lesson where we left off in the lesson on multiple inheritance, designing the JetCar class. As you may recall, we were designing a JetCar class to support development of a prototype of my new line of JetCars. We decided that the JetCar, having properties of both Cars and Jets needed to inherit from both classes. Here are the classes for your reference.

class Vehicle {
public:
    Vehicle() {cout << "Vehicle Constructor" << endl;}
    virtual ~Vehicle() {cout << "Vehicle Destructor" << endl;}

    virtual void accelerate() const {cout << "Vehicle Accelerating" << endl;}

    void setAcceleration(double a) {acceleration = a;}
    double getAcceleration() const {return acceleration;}

protected:
    double acceleration;
};

class Car: public Vehicle {
public:
    Car() {cout << "Car Constructor" << endl;}
    virtual ~Car() {cout << "Car Destructor" << endl;}

    virtual void accelerate() const {cout << "Car Accelerating" << endl;}
    virtual void drive() const {cout << "Car Driving" << endl;}

private:
    // Car inherits acceleration accessors, member
};

class Jet: public Vehicle {
public:
    Jet() {cout << "Jet Constructor" << endl;}
    virtual ~Jet() {cout << "Jet Destructor" << endl;}

    virtual void fly() const {cout << "Jet flying" << endl;}
};

class JetCar: public Car, public Jet {
public:
    JetCar() {cout << "JetCar Constructor" << endl;}
    virtual ~JetCar() {cout << "JetCar Destructor" << endl;}

    virtual void drive() const {cout << "JetCar driving" << endl;}
    virtual void fly() const {cout << "JetCar flying" << endl;}
};

Next page > Problems with Multiple Inheritance > Page 1, 2, 3, 4, 5, 6


Subscribe to the C/C++ Newsletter
Name
Email






Email this page | Sign up for a Newsletter |
Explore More
Most Popular Articles
• C++ Programming Tutorial
• C Programming Tutorial
• C++ Tutorial - Lesson 12: File Input and Output
• C++ Tutorial - Lesson 4: Input and Output - cin, cout, iostr...
• C++ Tutorial - Lesson 10: Arrays and Vectors
• C++ Tutorial - Lesson 1: Writing and Compiling A First Progr...
• Tutorials
What's Hot Now
• Teach Yourself C++ in 21 Days by Jesse Liberty
• C Programming Tutorial
• C++ Tutorial - Lesson 25: Operator Overloading
• The C Programming Language, 2nd Edition by Kernighan and Rit...
• Topics in C++: Function Template Specialization
• C Programming Tips: Using Long Constants
• C Tutorial - Lesson 5: Conditional Processing, Part 1 - Rela...
About Us | Advertise on This Site | User Agreement | Privacy Policy | Kids' Privacy Policy | Help
Copyright  © 2004 About, Inc. About and About.com are registered trademarks of About, Inc. The About logo is a trademark of About, Inc. All rights reserved.