#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のような特定のサブクラスではなく、receiveVehicletype のパラメーターを受け取るためだと思います。しかし、それが私が望んでいることです。この関数を のサブクラスで動作させたいのです。VehicleCarBikeVehicle
期待される出力が得られないのはなぜですか?