C++多态的应用--拿水果
题目描述:现在要实现拿水果。水果有很多的种类,比如苹果,香蕉,橘子等等。一般情况下拿水果的方式都是相同的,只有某些水果不一样,比如说现在拿香蕉的方式
就不一样,而拿苹果和橘子的方式相同。未来有更多的水果时,拿新水果的方式一般也与苹果、橘子相同。做一下设计,实现拿水果的接口。
#includeusing namespace std; class Fruit { public: virtual void take() = 0; }; void Fruit::take() { cout << "统一的take方式" << endl; } class Apple :public Fruit { public: virtual void take(); }; void Apple::take() { Fruit::take(); } class Oriange :public Fruit { public: virtual void take(); }; void Oriange::take() { Fruit::take(); } class Banana :public Fruit { public: virtual void take(); }; void Banana::take() { cout << "Banana特有的take方式" << endl; } class FruitOperator { public: void take(Fruit* fruit); }; void FruitOperator::take(Fruit* fruit) { fruit->take(); } int main() { FruitOperator fruitOperator; Fruit* pA = new Apple(); fruitOperator.take(pA); Fruit* pO = new Oriange(); fruitOperator.take(pO); Fruit* pB = new Banana(); fruitOperator.take(pB); delete pA; pA = nullptr; delete pO; pO = nullptr; delete pB; pB = nullptr; return 0; }