Inheritance
Base Classes
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
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;
}
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;void printName()
8void printName() {9 std::cout << "device=" << name << std::endl;10}outputdevice=Sensordevice.printName();
17 device.name = name;18 device(empty).printName();19 return 0;20}
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;void printName()
8void printName() {9 std::cout << "device=" << name << std::endl;10}outputdevice=Cameradevice.printName();
17 device.name = name;18 device(empty).printName();19 return 0;20}
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;void printName()
8void printName() {9 std::cout << "device=" << name << std::endl;10}outputdevice=Routerdevice.printName();
17 device.name = name;18 device(empty).printName();19 return 0;20}