0

这是代码:

   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我所期望的。这里有什么问题?

4

1 回答 1

2

在 Jet 中,您有以下内容:

   virtual void fly () const {
         cout << " Jet flying " << endl ;
                   }

在 JetCar 中,您拥有:

   virtual void fly () {
          cout << " JetCar flying " << endl ;
                       }

这些不是同一个功能。使函数声明相同,它应该可以工作。

于 2012-05-14T23:34:30.703 回答