-
复读机类( Repeater )
- 它有一个成员函数 Play,在这里它什么也不做。它还有一个析构函数,它被调用时会输出一行
砰!
。
- 它有一个成员函数 Play,在这里它什么也不做。它还有一个析构函数,它被调用时会输出一行
-
正向复读机类( ForRepeater )
- 继承 Repeater 类并重写 Play 函数,输出
没想到你也是一个复读机
且在析构函数中输出正·复读机 炸了
。
- 继承 Repeater 类并重写 Play 函数,输出
-
反向复读机类( RevRepeater )
- 继承 Repeater 类也重写 Play 函数,输出
机读复个一是也你到想没
且在析构函数中输出机读复·反 炸了
。
- 继承 Repeater 类也重写 Play 函数,输出
-
普通函数:
Repeater* CreateRepeater(int type)
,函数根据 type 的值,动态创建不同的复读机对象,并返回它的指针。其中当type = 0
,创建 ForRepeater 对象;type = 1
,创建 RevRepeater 对象;其他则返回 0。#include <iostream> using namespace std; /********* Begin *********/ class Repeater { //复读机基类的声明 public: virtual void Play(); virtual ~Repeater(); }; //复读机基类的定义 Repeater::~Repeater() { cout << "砰!" << endl; } void Repeater::Play() { } class ForRepeater : public Repeater { //正向复读机的声明 public: void Play() override; ~ForRepeater() ; }; //正向复读机的定义 void ForRepeater::Play() { cout << "没想到你也是一个复读机" << endl; } ForRepeater::~ForRepeater() { cout << "正·复读机 炸了" << endl; } class RevRepeater : public Repeater { //反向复读机的声明 public: void Play() override; ~RevRepeater(); }; //反向复读机的定义 void RevRepeater::Play() { cout << "机读复个一是也你到想没" << endl; } RevRepeater::~RevRepeater() { cout << "机读复·反 炸了" << endl; } //普通函数 Repeater* CreateRepeater(int type) { //根据type创建指定的复读机 Repeater* p; if (type == 0) { p = new ForRepeater(); return p; } else if (type == 1) { p = new RevRepeater(); return p; } else return 0; } /********* End *********/
C++ 面向对象 - 类的多态性与虚函数 复读机的毁灭
于 2023-12-20 23:52:20 首次发布