// file vehicle.h
class vehicle {
public:
bool family;
void print_info(void);
};
with code appearing in
// file vehicle.cpp
#include <iostream.h>
#include "vehicle.h"
void vehicle::print_info(void) {
if (family == true) {
cout << "This is a family vehicle." << endl;
}
else {
cout << "This is not a family vehicle." << endl;
}
}
which has a single attribute - a boolean family, indicating
if it's a family vehicle, and a method print_info, to
print out the vehicle information. This can be used as
#include <iostream.h>
#include "vehicle.h"
int main(void) {
vehicle bmw;
bmw.family = false;
bmw.print_info();
return 0;
}
Now let us define a child class bus, inheriting
from the vehicle and having an additional attribute,
capacity, indicating the number of passengers that
may be carried. We will also add an additional method,
set_capacity, to set this attribute, and also modify
the print_info method of the vehicle to include
printing out the addtional information.
The child's class definition appears in the header file
// file bus.h
#include "vehicle.h"
class bus : public vehicle {
public:
int capacity;
void set_capacity(int);
void print_info(void);
};
where the inheritance is specified through the
class : public parent notation. Note that
we only have to specify what attributes and/or methods
we want added or overridden - if not specified, those
of the parent will be used. The code for the methods
appears in
// file bus.cpp
#include <iostream.h>
#include "bus.h"
void bus::set_capacity(int input) {
capacity = input;
}
void bus::print_info(void) {
vehicle::print_info();
cout << "The capacity is " << capacity << endl;
}
Note the use of vehicle::print_info to access the
parent print_info method. An example of the use
of this class is
// file greyhound.cpp
#include <iostream.h>
#include "bus.h"
int main(void) {
bus greyhound;
greyhound.family = false;
greyhound.set_capacity(55);
greyhound.print_info();
return 0;
}
The sequence for which to compile it is
cc -c vehicle.cpp cc -c bus.cpp cc -o greyhound greyhound.cpp vehicle.o bus.o