class HERB {
public:
double appet;
HERB(double appet) : appet(appet) { cout << "A herb is born." << endl; }
virtual ~HERB() { cout << "A herb is dead." << endl; }
virtual void Show() { cout << "I need " << appet << " kg food." << endl; }
};
class HORSE :virtual public HERB {
public:
double speed;
HORSE(double appet, double speed) : HERB(appet), speed(speed) { cout << "A horse is born." << endl; }
~HORSE() { cout << "A horse is dead." << endl; }
void Show() override { cout << "I need " << appet << " kg food, I can run at " << speed << " km/h." << endl; }
};
class DONKEY :virtual public HERB {
public:
double load;
DONKEY(double appet, double load) : HERB(appet), load(load) { cout << "A donkey is born." << endl; }
~DONKEY() { cout << "A donkey is dead." << endl; }
void Show() override { cout << "I need " << appet << " kg food, I can carry " << load << " kg load." << endl; }
};
class MULE : public HORSE, public DONKEY {
public:
MULE(double appet, double speed, double load) : HERB(appet), HORSE(appet, speed), DONKEY(appet, load) {
cout << "A mule is born." << endl;
}
~MULE() { cout << "A mule is dead." << endl; }
void Show() override {
cout << "I need " << appet << " kg food, I can run at " << speed << " km/h, I can carry " << load << " kg load."
<< endl;
}
};
newnew
本文介绍了一个C++编程示例,展示了如何使用基类HERB和其派生类HORSE(马)、DONKEY(驴)以及两者组合的MULE(骡子)实现多态。每个类都有自己的属性和行为,通过虚函数实现不同特性的显示。
摘要由CSDN通过智能技术生成