#include <iostream>
class Vehicle {
public:
void greet() {
std::cout << "Hello, I'm a vehicle";
}
};
class Car : public Vehicle {
public:
void greet() {
std::cout << "Hello, I'm a car";
}
};
class Bike : public Vehicle {
public:
void greet() {
std::cout << "Hello, I'm a bike";
}
};
void receiveVehicle(Vehicle vehicle) {
vehicle.greet();
}
int main() {
receiveVehicle(Car());
return 0;
}
ご覧のとおり、タイプのパラメーターをVehicle
関数に送信しようとしていますgreet()
。
Car
とBike
のサブクラスですVehicle
。彼らは上書きしますgreet()
。
ただし、「こんにちは、私は乗り物です」と表示されます。
これは、orのような特定のサブクラスではなく、receiveVehicle
type のパラメーターを受け取るためだと思います。しかし、それが私が望んでいることです。この関数を のサブクラスで動作させたいのです。Vehicle
Car
Bike
Vehicle
期待される出力が得られないのはなぜですか?