Inheritance
Derived Classes
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
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;
}
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
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
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
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
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