#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
期待される出力が得られないのはなぜですか?