A derived class inherits members from its base class and adds its own members.

derived class The `:` syntax names the base class a derived class inherits from.

Derived Classes

example
derived_classes.cpp
Replay: real traced execution (multi-file project)
#include <iostream>
#include <string>

class Vehicle {
public:
    int speed;
};

class Bicycle : public Vehicle {
public:
    int gears;
};

int main() {
    int speed = 12;
    int gears = 6;

    Bicycle bike;
    bike.speed = speed;
    bike.gears = gears;

    std::cout << "speed=" << bike.speed << std::endl;
    std::cout << "gears=" << bike.gears << std::endl;
    return 0;
}
#include <iostream>
#include <string>

class Vehicle {
public:
    int speed;
};

class Bicycle : public Vehicle {
public:
    int gears;
};

int main() {
    int speed = 5;
    int gears = 6;

    Bicycle bike;
    bike.speed = speed;
    bike.gears = gears;

    std::cout << "speed=" << bike.speed << std::endl;
    std::cout << "gears=" << bike.gears << std::endl;
    return 0;
}
#include <iostream>
#include <string>

class Vehicle {
public:
    int speed;
};

class Bicycle : public Vehicle {
public:
    int gears;
};

int main() {
    int speed = 20;
    int gears = 6;

    Bicycle bike;
    bike.speed = speed;
    bike.gears = gears;

    std::cout << "speed=" << bike.speed << std::endl;
    std::cout << "gears=" << bike.gears << std::endl;
    return 0;
}
#include <iostream>
#include <string>

class Vehicle {
public:
    int speed;
};

class Bicycle : public Vehicle {
public:
    int gears;
};

int main() {
    int speed = 12;
    int gears = 1;

    Bicycle bike;
    bike.speed = speed;
    bike.gears = gears;

    std::cout << "speed=" << bike.speed << std::endl;
    std::cout << "gears=" << bike.gears << std::endl;
    return 0;
}
#include <iostream>
#include <string>

class Vehicle {
public:
    int speed;
};

class Bicycle : public Vehicle {
public:
    int gears;
};

int main() {
    int speed = 12;
    int gears = 10;

    Bicycle bike;
    bike.speed = speed;
    bike.gears = gears;

    std::cout << "speed=" << bike.speed << std::endl;
    std::cout << "gears=" << bike.gears << std::endl;
    return 0;
}
  1. speed ← 12, gears ← 6, bike ← (empty), bike.speed ← 12, bike.gears ← 6

    14int main() {15    int speed→ 12 = 12; //@speed=5, 2016    int gears→ 6 = 6; //@gears=1, 101718    Bicycle bike→ (empty);19    bike.speed→ 12 = speed12;20    bike.gears→ 6 = gears6;2122    std::cout << "speed=" << bike(empty).speed << std::endl;23    std::cout << "gears=" << bike(empty).gears << std::endl;24    return 0;25}
    outputspeed=12
    gears=6
  1. speed ← 5, gears ← 6, bike ← (empty), bike.speed ← 5, bike.gears ← 6

    14int main() {15    int speed→ 5 = 5;16    int gears→ 6 = 6;1718    Bicycle bike→ (empty);19    bike.speed→ 5 = speed5;20    bike.gears→ 6 = gears6;2122    std::cout << "speed=" << bike(empty).speed << std::endl;23    std::cout << "gears=" << bike(empty).gears << std::endl;24    return 0;25}
    outputspeed=5
    gears=6
  1. speed ← 20, gears ← 6, bike ← (empty), bike.speed ← 20, bike.gears ← 6

    14int main() {15    int speed→ 20 = 20;16    int gears→ 6 = 6;1718    Bicycle bike→ (empty);19    bike.speed→ 20 = speed20;20    bike.gears→ 6 = gears6;2122    std::cout << "speed=" << bike(empty).speed << std::endl;23    std::cout << "gears=" << bike(empty).gears << std::endl;24    return 0;25}
    outputspeed=20
    gears=6
  1. speed ← 12, gears ← 1, bike ← (empty), bike.speed ← 12, bike.gears ← 1

    14int main() {15    int speed→ 12 = 12;16    int gears→ 1 = 1;1718    Bicycle bike→ (empty);19    bike.speed→ 12 = speed12;20    bike.gears→ 1 = gears1;2122    std::cout << "speed=" << bike(empty).speed << std::endl;23    std::cout << "gears=" << bike(empty).gears << std::endl;24    return 0;25}
    outputspeed=12
    gears=1
  1. speed ← 12, gears ← 10, bike ← (empty), bike.speed ← 12, bike.gears ← 10

    14int main() {15    int speed→ 12 = 12;16    int gears→ 10 = 10;1718    Bicycle bike→ (empty);19    bike.speed→ 12 = speed12;20    bike.gears→ 10 = gears10;2122    std::cout << "speed=" << bike(empty).speed << std::endl;23    std::cout << "gears=" << bike(empty).gears << std::endl;24    return 0;25}
    outputspeed=12
    gears=10