计算机运行(多态语法总结)

//多态语法总结  父类指针指向子类成员  子类成员重写父类虚函数
#include <iostream>
using namespace std;
//cpu基类
class cpu
{
public:virtual void calculate() = 0;
};
//显卡基类
class videocard
{
public:virtual void display() = 0;
};
//内存条基类
class memory
{
public:virtual void storage() = 0;
};
//计算机类
class computer
{
public:
	//初始化构造函数
	computer(cpu* cpu, videocard* vs, memory* mem)
	{
		m_cpu = cpu; m_vs = vs; m_mem = mem;
	}
	//使其计算机工作的函数
	void dowork()
	{
		m_cpu->calculate();
		m_vs->display();
		m_mem->storage();
	}
	//析构函数 函数调用后释放内存
	~computer()
	{
		if (m_cpu != NULL)
		{
			delete m_cpu;
			m_cpu = NULL;
		}
		if (m_vs != NULL)
		{
			delete m_vs;
			m_vs = NULL;
		}
		if (m_mem != NULL)
		{
			delete m_mem;
			m_mem = NULL;
		}
	}
private:
	cpu *m_cpu;
	videocard * m_vs;
	memory* m_mem;

 };
//创建一个具体的计算机产商类型Intel厂商
class intelcpu :public cpu
{
public:void calculate()//重写父类虚函数
	{
		cout << "intel的处理器正在工作" << endl;
	 }
};
class intelvideocard :public videocard
{
public: void display()
{
	cout << "intel的显卡正在工作" << endl;;
}
};
class intelmemory :public memory
{
public:void storage()
{
	cout << "intel的内存条正在工作" << endl;
}
};
//asus华硕厂商
class asuscpu :public cpu
{
public:void calculate()
{
	cout << "asus的处理器正在工作" << endl;
}
};
class asusvideocard :public videocard
{
public: void display()
{
	cout << "asus的显卡正在工作" << endl;
}
};
class asusmemory :public memory 
{
public:void storage()
{
	cout << "asus的内存条正在工作" << endl;
}
};
void test01()
{//基类指针指向子类成员
	cpu* intelCpu = new intelcpu;
	//intelCpu->calculate();106 108 110 这三行也能等同于113这一行
	videocard* intelcard = new intelvideocard;
	//intelcard->display();
	memory* intmemory = new intelmemory;
	//intmemory->storage();
	//创建第一台电脑
	computer* computer1 = new computer(intelCpu, intelcard, intmemory);
	computer1->dowork();
	computer1->~computer();
	delete computer1;
}
void test02()
{
	computer* computer2 = new computer(new asuscpu , new asusvideocard, new asusmemory);
	computer2->dowork();
	computer2->~computer();
	delete computer2;
}
void test03()
{
	computer* computer3 = new computer(new intelcpu, new asusvideocard, new intelmemory);
	computer3->dowork();
	computer3->~computer();
	delete computer3;
}
void test04()
{
	computer* computer4 = new computer(new asuscpu, new intelvideocard, new asusmemory);
	computer4->dowork();
	computer4->~computer();
	delete computer4;
}
int main()
{
	cout << "第一台电脑正在工作:"<<endl;
	test01();
	cout << "-----------------------" << endl;
	cout << "第二台电脑正在工作:" << endl;
	test02();
	cout << "-----------------------" << endl;
	cout << "第三台电脑正在工作:" << endl;
	test03();
	cout << "-----------------------" << endl;
	cout << "第四台电脑正在工作:" << endl;
	test04();
	return 0;
	system("pause");
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值