#include<iostream>
using namespace std;
#include<string>
//关于多态编程思想
class CPU//抽象类:无法实例化对象
{
public:
virtual void calculate() = 0;
};
class Display
{
public:
virtual void disp() = 0;
};
class Memonry
{
public:
virtual void memon() = 0;
};
class InterCPU :public CPU//子类必须重写父类抽象方法,否则也为抽象类
{
public:
void calculate()
{
cout << "Inter牌CPU正在计算" << endl;
}
};
class InterDisplay :public Display
{
public:
void disp()
{
cout << "Inter牌显卡正在工作" << endl;
}
};
class InterMemory : public Memonry
{
public:
void memon()
{
cout << "Inter牌内存条正在存储" << endl;
}
};
class LenovoCPU :public CPU
{
public:
void calculate()
{
cout << "Lenovo牌CPU正在计算" << endl;
}
};
class LenovoDisplay :public Display
{
public:
void disp()
{
cout << "Lenovo牌显卡正在工作" << endl;
}
};
class LenovoMemory : public Memonry
{
public:
void memon()
{
cout << "Lenovo牌内存条正在存储" << endl;
}
};
class computer
{
public:
computer(CPU *C,Display *D,Memonry *M)//构造函数,初始化类变量
{
c = C;
d = D;
m = M;
c->calculate();
d->disp();
m->memon();
}
~computer()//析构,释放堆区代码
{
if (c != NULL)
{
delete c;
c = NULL;
}
if (d != NULL)
{
delete d;
d = NULL;
}
if (m != NULL)
{
delete m;
m = NULL;
}
}
private:
CPU* c;
Display* d;
Memonry* m;
};
int main()
{
//父类的饮用和指针都可以直接指向子类对象
//由于子类开辟到堆区,所以父类指针在释放的时候无法调用到子类的析构函数
//解决办法:将父类的析构函数改为虚析构函数或者纯虚析构函数(纯虚析构函数在类外一定要实现)
computer c(new LenovoCPU,new InterDisplay,new LenovoMemory);
}
c++多态的小例子
最新推荐文章于 2024-08-12 21:58:21 发布