4.7.5虚析构和纯虚虚构

4.7.5虚析构和纯虚虚构


#include <iostream>
using namespace std;
#include<string>
//虚析构,纯虚析构
class Animal
{
public:
	Animal()
	{
		cout << "Animal" << endl;
	}


	virtual void speak() = 0;
	//纯虚析构
	virtual ~Animal()
	{
		cout << "~Animal" << endl;
	}
};

class cat :public Animal
{
public:
	cat(string name)
	{
		cout << "cat()" << endl;
		m_name = new string(name);
	}
	virtual void speak()
	{
		cout << *m_name<<"  cat speak" << endl;
	}
	string *m_name;
	~cat()
	{
		if (m_name != NULL)
		{
			cout << "~cat()" << endl;
			delete m_name;
			m_name = NULL;
		}
	}
};
void test01()
{
	Animal *ani = new cat("tom");
	ani->speak();
	delete ani;

}

int main4_7_5()
{
	test01();


	system("pause");
	return 0;
}

4.7.4制作饮品


#include <iostream>
using namespace std;

class Abstr
{
public:
	virtual void boil() = 0;
	virtual void brew() = 0;
	virtual void pour() = 0;
	virtual void put() = 0;
	void makeDrink()
	{
	boil();
	brew();
	pour();
	 put();
	}
};
class coffee:public Abstr
{
public:
	virtual void boil()
	{
		cout << "coffee注水" << endl;
	}
	virtual void brew()
	{
		cout << "coffee冲泡" << endl;
	}
	virtual void pour()
	{
		cout << "coffee倒入杯中" << endl;
	}
	virtual void  put()
	{
		cout << "coffee放其他东西" << endl;
	}
};
class tea :public Abstr
{
public:
	virtual void boil()
	{
		cout << "tea注水" << endl;
	}
	virtual void brew()
	{
		cout << "tea冲泡" << endl;
	}
	virtual void pour()
	{
		cout << "tea倒入杯中" << endl;
	}
	virtual void  put()
	{
		cout << "tea放其他东西" << endl;
	}
};
void dowork(Abstr *abs)
{
	abs->makeDrink();
	delete abs;
}
void test01()
{
	dowork(new coffee);

}
int main4_7_4()
{

	test01();

	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cdbycd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值