以下是代码:
class Vehicle {
public :
Vehicle () {
cout << " Vehicle Constructor " << endl ;
}
virtual ~ Vehicle () {
cout << " Vehicle Destructor " << endl ;
}
virtual void accelerate () {
cout << " Vehicle Accelerating " << endl ;
}
void setAcceleration ( double a ) {
acceleration = a;
}
double getAcceleration () {
return acceleration ;
}
protected :
double acceleration ;
};
class Car : public Vehicle {
public :
Car () {
cout << " Car Constructor " << endl ;
}
virtual ~ Car () {
cout << " Car Destructor " << endl ;
}
virtual void accelerate () {
cout << " Car Accelerating " << endl ;
}
virtual void drive () {
cout << " Car Driving " << endl ;
}
};
class Jet : public Vehicle {
public :
Jet () {
cout << " Jet Constructor " << endl ;
}
virtual ~ Jet () {
cout << " Jet Destructor " << endl ;
}
virtual void fly () const {
cout << " Jet flying " << endl ;
}
};
class JetCar : public Car , public Jet {
public :
JetCar () {
cout << " JetCar Constructor " << endl ;
}
virtual ~ JetCar () {
cout << " JetCar Destructor " << endl ;
}
virtual void drive () {
cout << " JetCar driving " << endl ;
}
virtual void fly () {
cout << " JetCar flying " << endl ;
}
};
void analyzeCarPerformance ( Car * testVehicle ) {
testVehicle -> drive () ;
}
void analyzeJetPerformance ( Jet * testVehicle ) {
testVehicle -> fly () ;
}
int main () {
Car myCar ;
Jet myJet ;
JetCar myJetCar ;
cout << endl << endl ;
cout << " Car testing in progress " << endl ;
analyzeCarPerformance (& myCar );
analyzeCarPerformance (& myJetCar ) ;
cout << " Jet testing in progress " << endl ;
analyzeJetPerformance (& myJet );
analyzeJetPerformance (& myJetCar ) ;
cout << endl << endl ;
return 0;
}
在主要调用函数analyzeJetPerformance (& myJetCar )
时,编译器给了我Jat flying
而不是JetCar flying
我期望的内容。这有什么问题?
答案 0 :(得分:2)
在Jet中你有以下几点:
virtual void fly () const {
cout << " Jet flying " << endl ;
}
在JetCar中你有:
virtual void fly () {
cout << " JetCar flying " << endl ;
}
那些功能不一样。使函数声明相同,它应该工作。