A base class holds data or behavior that derived classes can reuse.

base class A base class is written before derived classes so common members have one shared definition.

Base Classes

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

class Device {
public:
    std::string name;

    void printName() {
        std::cout << "device=" << name << std::endl;
    }
};

int main() {
    std::string name = "Sensor";

    Device device;
    device.name = name;
    device.printName();
    return 0;
}
#include <iostream>
#include <string>

class Device {
public:
    std::string name;

    void printName() {
        std::cout << "device=" << name << std::endl;
    }
};

int main() {
    std::string name = "Camera";

    Device device;
    device.name = name;
    device.printName();
    return 0;
}
#include <iostream>
#include <string>

class Device {
public:
    std::string name;

    void printName() {
        std::cout << "device=" << name << std::endl;
    }
};

int main() {
    std::string name = "Router";

    Device device;
    device.name = name;
    device.printName();
    return 0;
}
  1. name ← Sensor, device ← (empty)

    13int main() {14    std::string name→ Sensor = "Sensor"; //@name="Camera", "Router"1516    Device device→ (empty);17    device(empty).name = nameSensor;18    device(empty).printName();19    return 0;
  2. void printName()

    8void printName() {9    std::cout << "device=" << name << std::endl;10}
    outputdevice=Sensor
  3. device.printName();

    17    device.name = name;18    device(empty).printName();19    return 0;20}
  1. name ← Camera, device ← (empty)

    13int main() {14    std::string name→ Camera = "Camera";1516    Device device→ (empty);17    device(empty).name = nameCamera;18    device(empty).printName();19    return 0;
  2. void printName()

    8void printName() {9    std::cout << "device=" << name << std::endl;10}
    outputdevice=Camera
  3. device.printName();

    17    device.name = name;18    device(empty).printName();19    return 0;20}
  1. name ← Router, device ← (empty)

    13int main() {14    std::string name→ Router = "Router";1516    Device device→ (empty);17    device(empty).name = nameRouter;18    device(empty).printName();19    return 0;
  2. void printName()

    8void printName() {9    std::cout << "device=" << name << std::endl;10}
    outputdevice=Router
  3. device.printName();

    17    device.name = name;18    device(empty).printName();19    return 0;20}