替换原则

泛型

#include <iostream>
#include <vector>
using namespace std; 

class Vehicle {
public:
    void test() {
        cout << "test: ";
        cout << typeid(this).name() << endl;
    }
};

class Car: public Vehicle { };

class Truck: public Vehicle { };

vector<Vehicle> list;
Vehicle vehicle;
Car car;
Truck truck;

list.push_back(vehicle);
list.push_back(car);
list.push_back(truck);

for (auto curVehicle : list) {
    curVehicle.test();
}