#include#include 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; }
主要参考注释,冲冲冲



