首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于C++多态性的有关问题。学生党求大神庇佑

2013-11-21 
关于C++多态性的问题。学生党求大神庇佑!要用多态性实现下列的代码,可以运行但是好像运用的不是多态性的原

关于C++多态性的问题。学生党求大神庇佑!
要用多态性实现下列的代码,可以运行但是好像运用的不是多态性的原理求解释。如果可以的话帮我把这点代码稍微改一哈,谢谢

[code=c]
[/code]
#include<iostream>
using namespace std;


class Engine
{
private:

int Power;//输出功率
int Torque;//扭矩
public:
Engine();
virtual void displayPower();
virtual void displayTorque();
};

class Car
{
};

class electric:public Car
{
public :
virtual void displayPower()
{
cout <<"electricCarEnginePower = 1"<<endl;
}
virtual void displayTorque()
{
cout <<"electricCarEngineTorque = 1"<<endl;
}
};


class SunCar:public Car
{
public :
virtual void displayPower()
{
cout <<"SunCarEnginePower = 2"<<endl;
}
virtual void displayTorque()
{
cout <<"SunCarEngineTorque = 2"<<endl;
}

};

class electricCarEngine:public electric,public Car
{
 
};

class SunCarEngine:public SunCar,public Car
{
 

};

int main()
{
electricCarEngine electricCarEngine1;
electricCarEngine1.displayPower();
electricCarEngine1.displayTorque();

SunCarEngine SunCarEngine1;
SunCarEngine1.displayPower();
SunCarEngine1.displayTorque();


int z;
cin >>z;

return 0;
}
[解决办法]

#include<iostream>
using namespace std;


class Engine
{
private:

int Power;//输出功率
int Torque;//扭矩
public:
Engine();
virtual void displayPower();
virtual void displayTorque();
};

class Car:public Engine
{
};

class electric:public Car
{
public :
virtual void displayPower()
{
cout <<"electricCarEnginePower = 1"<<endl;
}
virtual void displayTorque()
{
cout <<"electricCarEngineTorque = 1"<<endl;
}
};


class SunCar:public Car
{
public :
virtual void displayPower()
{
cout <<"SunCarEnginePower = 2"<<endl;
}
virtual void displayTorque()
{
cout <<"SunCarEngineTorque = 2"<<endl;
}

};

class electricCarEngine:public electric,public Car
{
 
};

class SunCarEngine:public SunCar,public Car
{
 

};

int main()
{//
//electricCarEngine electricCarEngine1;
//electricCarEngine1.displayPower();
//electricCarEngine1.displayTorque();

//SunCarEngine SunCarEngine1;
//SunCarEngine1.displayPower();
//SunCarEngine1.displayTorque();
//int z;
//cin >>z;
  Engine * pcar=new SunCarEngine();
  pcar->displayPower();
  pcar->displayTorque();

  pcar=new electric();
  //还是调用这两个方法,但是调用的是electric类的方法
  pcar->displayPower();
  pcar->displayTorque();

  pcar=new SunCar();
  //还是调用这两个方法,但是调用的是SunCar类的方法
  pcar->displayPower();
  pcar->displayTorque();

  getchar();
  return 0;
}

热点排行