#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().
但是,我得到“你好,我是一辆车”。
我想这是因为receiveVehicle接收一个类型的参数Vehicle而不是一个特定的子类,比如Caror Bike。但这就是我想要的:我希望这个函数可以与Vehicle.
为什么我没有得到预期的输出?