#include<iostream>
#include <string >
using namespace std;
//建立三个抽象类 (相当于是结构)
class A
{
public :
virtual void workA() = 0; //
};
class B
{
public:
virtual void workB() = 0; //
};
class C
{
public:
virtual void workC() = 0; //
};
//建立一个实际个体,他会包含三种抽象类 (将三种抽象类具体化)
class XA:public A
{
public:
void workA()
{
cout << "实际个体X的A项工作workA建立" << endl;
}
};
class XB :public B
{
public:
void workB()
{
cout << "实际个体X的B项工作workB建立" << endl;
}
};
class XC :public C
{
public:
void workC()
{
cout << "实际个体X的C项工作workC建立" << endl;
}
};
//三项的整体是个啥,建立一个类
class ABC
{
public :
ABC(A *aa,B *bb,C *cc) //利用构造函数对其赋值
{
a = aa;
b = bb;
c = cc;
}
void allwork() //构建一个函数,调用三个类中的函数
{
a->workA();
b->workB();
c->workC();
}
~ABC()
{
cout << "利用析构函数释放掉三个指针在堆区创建的空间" << endl;
if (a != NULL)
{
delete a;
a = NULL;
}
if (b != NULL)
{
delete b;
b = NULL;
}
if (c != NULL)
{
delete c;
c = NULL;
}
}
private :
A* a; //建立的A类指针*a
B* b;
C* c;
};
void test()
{
A* a1 = new XA; //创建一个父类样子的指针 父类的指针或者引用 指向子类对象(多态的使用)
B* b1 = new XB;
C* c1 = new XC;
ABC* abc = new ABC(a1,b1,c1);
abc->allwork();
delete abc; //释放掉abc在堆区的内存
}
int main()
{
test();
system("pause");
return 0;
}
主要参考注释,冲冲冲