Éè¼ÆÄ£Ê½Ñ§Ï°-----×éºÏģʽ
5195 µã»÷¡¤0 »ØÌû
![]() | ![]() | |
![]() | ×éºÏģʽ ¡¡¡¡¡¡GOOD£ºÕûÌåºÍ²¿·Ö¿ÉÒÔ±»Ò»Ö¶Դý£¨ÈçWORDÖи´ÖÆÒ»¸öÎÄ×Ö¡¢Ò»¶ÎÎÄ×Ö¡¢Ò»ÆªÎÄÕ¶¼ÊÇÒ»ÑùµÄ²Ù×÷£© [html] #include <iostream> #include <string> #include <vector> using namespace std; class Component { public: string m_strName; Component(string strName) { m_strName = strName; } virtual void Add(Component* com)=0; virtual void Display(int nDepth)=0; }; class Leaf : public Component { public: Leaf(string strName): Component(strName){} virtual void Add(Component* com) { cout<<"leaf can't add"<<endl; } virtual void Display(int nDepth) { string strtemp; for(int i=0; i < nDepth; i++) { strtemp+="-"; } strtemp += m_strName; cout<<strtemp<<endl; } }; class Composite : public Component { private: vector<Component*> m_component; public: Composite(string strName) : Component(strName){} virtual void Add(Component* com) { m_component.push_back(com); } virtual void Display(int nDepth) { string strtemp; for(int i=0; i < nDepth; i++) { strtemp+="-"; } strtemp += m_strName; cout<<strtemp<<endl; vector<Component*>::iterator p=m_component.begin(); while (p!=m_component.end()) { (*p)->Display(nDepth+2); p++; } } }; //¿Í»§¶Ë int main() { Composite* p=new Composite("СÍõ"); p->Add(new Leaf("СÀî")); p->Add(new Leaf("СÕÔ")); Composite* p1 = new Composite("ССÎå"); p1->Add(new Leaf("´óÈý")); p->Add(p1); p->Display(1); return 0; } [html] #include <iostream> #include <string> #include <vector> using namespace std; class Company { protected: string m_strName; public: Company(string strName) { m_strName = strName; } virtual void Add(Company* c)=0; virtual void Display(int nDepth)=0; virtual void LineOfDuty()=0; }; class ConcreteCompany: public Company { private: vector<Company*> m_company; public: ConcreteCompany(string strName):Company(strName){} virtual void Add(Company* c) { m_company.push_back(c); } virtual void Display(int nDepth) { string strtemp; for(int i=0; i < nDepth; i++) { strtemp += "-"; } strtemp +=m_strName; cout<<strtemp<<endl; vector<Company*>::iterator p=m_company.begin(); while (p!=m_company.end()) { (*p)->Display(nDepth+2); p++; } } virtual void LineOfDuty() { vector<Company*>::iterator p=m_company.begin(); while (p!=m_company.end()) { (*p)->LineOfDuty(); p++; } } }; class HrDepartment : public Company { public: HrDepartment(string strname) : Company(strname){} virtual void Display(int nDepth) { string strtemp; for(int i = 0; i < nDepth; i++) { strtemp += "-"; } strtemp += m_strName; cout<<strtemp<<endl; } virtual void Add(Company* c) { cout<<"error"<<endl; } virtual void LineOfDuty() { cout<<m_strName<<":ÕÐÆ¸È˲Å"<<endl; } }; //¿Í»§¶Ë£º int main() { www.atcpu.com ConcreteCompany *p = new ConcreteCompany("Ç廪´óѧ"); p->Add(new HrDepartment("Ç廪´óѧÈ˲Ų¿")); ConcreteCompany *p1 = new ConcreteCompany("Êýѧϵ"); p1->Add(new HrDepartment("ÊýѧϵÈ˲Ų¿")); ConcreteCompany *p2 = new ConcreteCompany("ÎïÀíϵ"); p2->Add(new HrDepartment("ÎïÀíϵÈ˲Ų¿")); p->Add(p1); p->Add(p2); p->Display(1); p->LineOfDuty(); return 0; } | |
![]() | ![]() |