//多态语法总结 父类指针指向子类成员 子类成员重写父类虚函数
#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");
}
计算机运行(多态语法总结)
最新推荐文章于 2022-08-06 23:13:14 发布