【C++ 】类与对象 -- 纯虚函数与抽象类

纯虚函数: 没有函数具体实现

virtual 返回值类型 函数名(参数表)= 0;  // 后面的"= 0"是必须的

抽象类: 含有纯虚拟函数的类

class 类名{  // 只能用作基类,不能生成对象
	virtual 返回值类型 函数名(参数表)= 0;  // 纯虚拟函数
};

示例如下:AbstractDrinking 为抽象类,包括 Boil, Brew ... 这些虚构函数

//抽象制作饮品
class AbstractDrinking{
public:
	//烧水
	virtual void Boil() = 0;
	//冲泡
	virtual void Brew() = 0;
	//倒入杯中
	virtual void PourInCup() = 0;
	//加入辅料
	virtual void PutSomething() = 0;
	//规定流程
	void MakeDrink(){
		Boil();
		Brew();
		PourInCup();
		PutSomething();
	}
};

//制作咖啡
class Coffee : public AbstractDrinking{
public:
	//烧水
	virtual void Boil(){
		cout << "煮农夫山泉!" << endl;
	}
	//冲泡
	virtual void Brew(){
		cout << "冲泡咖啡!" << endl;
	}
	//倒入杯中
	virtual void PourInCup(){
		cout << "将咖啡倒入杯中!" << endl;
	}
	//加入辅料
	virtual void PutSomething(){
		cout << "加入牛奶!" << endl;
	}
};

//制作茶水
class Tea : public AbstractDrinking{
public:
	//烧水
	virtual void Boil(){
		cout << "煮自来水!" << endl;
	}
	//冲泡
	virtual void Brew(){
		cout << "冲泡茶叶!" << endl;
	}
	//倒入杯中
	virtual void PourInCup(){
		cout << "将茶水倒入杯中!" << endl;
	}
	//加入辅料
	virtual void PutSomething(){
		cout << "加入食盐!" << endl;
	}
};

//业务函数
void DoBussiness(AbstractDrinking* drink){
	drink->MakeDrink();
	delete drink;
}

void test(){
	DoBussiness(new Coffee);
	DoBussiness(new Tea);
}

【黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难】

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 09:32:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 09:32:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 09:32:02       58 阅读
  4. Python语言-面向对象

    2024-07-15 09:32:02       69 阅读

热门阅读

  1. 设计模式--简单(抽象)工厂模式

    2024-07-15 09:32:02       24 阅读
  2. python中停止线程的方法

    2024-07-15 09:32:02       19 阅读
  3. 【前端】fis框架学习

    2024-07-15 09:32:02       19 阅读
  4. 根据vue学习react

    2024-07-15 09:32:02       18 阅读
  5. C语言指针常见陷阱及避免方法

    2024-07-15 09:32:02       28 阅读
  6. C# 使用正则解析html

    2024-07-15 09:32:02       21 阅读
  7. XML Schema 指示器

    2024-07-15 09:32:02       28 阅读
  8. 概率论原理精解【2】

    2024-07-15 09:32:02       25 阅读
  9. 刷题2路1线

    2024-07-15 09:32:02       21 阅读
  10. 面向对象编程的6大原则

    2024-07-15 09:32:02       23 阅读
  11. ArduPilot开源代码之AP_AHRS_View

    2024-07-15 09:32:02       20 阅读
  12. B4005 [GESP202406 四级] 黑白方块

    2024-07-15 09:32:02       74 阅读