3.操做記錄的類,記錄節點狀態,設置節點狀態,顯示節點狀態php
=======ios
代碼:算法
#include <iostream>
#include <string> using namespace std; class OP { public: double a; double b; virtual double jisuan() { return 0; } }; class add : public OP { double jisuan() { return a + b; } }; class sub : public OP { double jisuan() { return a - b; } }; class divv : public OP { double jisuan() { return a / b; } }; class mul : public OP { double jisuan() { return a * b; } }; class Fac { public: static OP *selectop(char c) { switch (c) { case '+': return new add(); break; case '-': return new sub(); break; case '*': return new mul(); break; case '/': return new divv(); break; default: printf("you entered wrong caculation!!"); break; } } }; int main(void) { OP *opr = Fac::selectop('/'); opr->a = 100; opr->b = 5; cout << opr->jisuan() << endl; return 0; }
代碼:設計模式
#include <iostream>
#include <string> using namespace std; class OP { public: double a, b; virtual double jisuan() { return 0; } }; class add : public OP { double jisuan() { return a + b; } }; class sub : public OP { double jisuan() { return a - b; } }; class divv : public OP { double jisuan() { return a / b; } }; class mul : public OP { double jisuan() { return a * b; } }; class IFac { private: /* data */ public: virtual OP *selectop() = 0; }; class addop : public IFac { public: static OP *selectop() { return new add(); } }; class subop : public IFac { public: static OP *selectop() { return new sub(); } }; class divop : public IFac { public: static OP *selectop() { return new divv(); } }; class mulop : public IFac { public: static OP *selectop() { return new mul(); } }; int main(void) { IFac *opp = mulop::selectop(); opp->a=90; opp->b=100; cout << opp->jisuan()<<endl; return 0; }
public: int a=100; }aa; #include <iostream> #include <string> class { public: int a = 100; } aa; class SingleInstance { private: /* data */ int i = 0; public: static SingleInstance *instance; SingleInstance(int a) { this->i = a; } static SingleInstance *get_instance() { return instance; } }; SingleInstance *SingleInstance::instance = new SingleInstance(1995); class B:public SingleInstance { }; int main(void) { SingleInstance *s1=SingleInstance::get_instance(); SingleInstance *s2=B::get_instance(); std::cout<<(s1==s2)<<std::endl; std::cin.get(); return 0; }
#include <iostream>
#include <string> using namespace std; class girl { public: girl(string); girl(); ~ girl(); string name; private: }; girl:: girl(string s1) { name = s1; } girl::~ girl() { } girl::girl() { name = "不知名的!"; } class gift { public: virtual void gift1() = 0; virtual void gift2() = 0; }; class gg:public gift { public: gg(girl); ~gg(); void gift1() { cout << mm.name << "送你禮物1" << endl; } void gift2() { cout << mm.name << "送你禮物2" << endl; } private: girl mm; }; gg::gg(girl m) { mm = m; } gg::~gg() { } class proxy :public gift { private : gg gg1; public: proxy(girl mm) :gg1(mm) { } void gift1() { gg1.gift1(); } void gift2() { gg1.gift2(); } }; int main(void) { girl mm1("小妹妹"); proxy p1(mm1); p1.gift1(); p1.gift2(); cin.get(); return 0; }
#include <iostream>
#include <string> #include <list> using namespace std; class doing { public: void action1() { cout << "lalala 吃飯了" << endl; } void action2() { cout << "是時候運動了!!!!!" << endl; } private: }; class Command { public: Command(doing * d) { reciver = d; } virtual void do_doing() = 0; protected: doing* reciver; }; class action1_command:public Command { public: action1_command(doing* d) :Command(d) { } void do_doing() { reciver->action1(); } }; class action2_command :public Command { public: action2_command(doing* d) :Command(d) { } void do_doing() { reciver->action2(); } }; class waiter { public: void set_action(Command* c) { this->command = c; } void do_action() { this->command->do_doing(); } protected: Command* command; }; class waiter_n { public: void set_action(Command* c) { this->command.push_back(c); } void do_action() { auto n = command.begin(); while (n!=command.end()) { (*n)->do_doing(); n++; } } private: list<Command*> command; }; int main(void) { doing* dd = new doing(); Command* action_command1 = new action1_command(dd); Command* action_command2 = new action2_command(dd); waiter* w = new waiter(); w->set_action(action_command1); w->do_action(); w->set_action(action_command2); w->do_action(); cout << endl; waiter_n* ww = new waiter_n(); ww->set_action(action_command1); ww->set_action(action_command2); ww->do_action(); return 0; }
#include <iostream>
#include <string> using namespace std; class Request { public: string request_name; string request_type; int n; private: }; class Manager { public: Manager(string n, string j, int id) { name = n; job = j; classid = id; } void setSuper(Manager *p) { this->super = p; } virtual void apply(Request*) = 0; int classid; Manager* super; string name; string job; private: }; class zhuguan:public Manager { public: zhuguan(string n, int id) :Manager(n,"主管", id) {} void apply(Request* r) { if (r->n > this->classid) { cout << r->request_type << "\t" << r->request_name << "\t 被" << this->job << this->name << "審閱!無權限,將繼續向上遞交!!" << "classid=" << this->classid << endl; super->apply(r); } else { cout << r->request_type << "\t" << r->request_name << "\t 被"<<this->job<<this->name<<"批准!!!"<<"classid="<<this->classid<< endl; } } private: }; class zongjian :public Manager { public: zongjian(string n, int id) :Manager(n, "總監", id) {} void apply(Request* r) { if (r->n > this->classid) { cout << r->request_type << "\t" << r->request_name << "\t 被" << this->job << this->name << "審閱!無權限,將繼續向上遞交!!" << "classid=" << this->classid << endl; super->apply(r); } else { cout << r->request_type << "\t" << r->request_name << "\t 被" << this->job << this->name << "批准!!!" << "classid=" << this->classid << endl; } } private: }; class zongjingli :public Manager { public: zongjingli(string n) :Manager(n, "總經理", 1000) {} void apply(Request* r) { cout << r->request_type << "\t" << r->request_name << "\t 被" << this->job << this->name << "批准!!!" << "classid=" << this->classid << endl; } private: }; int main(void) { Request* request = new Request(); request->request_name = "生病請10天假"; request->request_type = "病假"; request->n = 50; zhuguan* zg = new zhuguan("小芳", 10); zongjian* zj = new zongjian("小明", 30); zongjingli* zjl = new zongjingli("老大"); zg->setSuper(zj); zj->setSuper(zjl); zg->apply(request); return 0; }
#include <iostream>
#include <boost/array.hpp> #include <string> using namespace std; int main(void) { boost::array<int,10> arr = { 0,1,2,3,4,5,6,7,8,9 }; boost::array<int, 10>::iterator ib = arr.begin(); boost::array<int, 10>::iterator ie = arr.end(); for (;ib!=ie;ib++) { cout << *ib << endl; } cin.get(); return 0; }
使用:數組
代碼:數據結構
#include <iostream>
#include <string> #include <functional> #include <list> #include <algorithm> #include "boost/bind.hpp" using namespace std; using namespace boost; class jia:public binary_function<int,int,void> { public: void operator ()( int i, int j) const { cout << i+j << endl; } private: }; int main(void) { list <int> ls1; ls1.push_back(5); ls1.push_back(15); ls1.push_back(125); for_each(ls1.begin(), ls1.end(), bind1st(jia(),10)); cin.get(); return 0; }
#include <iostream>
#include <string> #include <functional> #include <list> #include <algorithm> #include "boost/bind.hpp" using namespace std; using namespace boost; class jia:public binary_function<int,int,void> { public: void operator ()( int i, int j) const { cout << i+j << endl; } private: }; void add(int i, int j) { cout << i + j << endl; } int main(void) { list <int> ls1; ls1.push_back(5); ls1.push_back(15); ls1.push_back(125); //std 方式 for_each(ls1.begin(), ls1.end(), bind1st(jia(),10)); //boost 方式 for_each(ls1.begin(), ls1.end(), bind(add,13, _1)); cin.get(); return 0; }
這個重新作一個文章吧,在這裏放不下。。。
#include <iostream>
using namespace std; class A { public: void virtual a() { std::cout << "A --> a" << endl; } void virtual b() { std::cout << "A--> b" << endl; } void virtual c() { std::cout << "A--> c" << endl; } private: }; class B :public A { public: void virtual a() { std::cout << "B--> a" << endl; } void virtual b() { std::cout << "B--> b" << endl; } }; typedef void (*Pfunc) (void); int main(void) { B b; cout << "B is " <<sizeof(b) << endl; Pfunc pfc; for (int i = 0; i < 3; i++) { /* (&b) 取出B的地址 (int *)(&b) 轉換b的地址爲int 類型,方便後期訪問緊跟着它的內存 *(int *)(&b) 取出B裏面的內容(虛函數表的地址) (int *) *(int *)(&b) 把虛函數表的地址轉換爲int類型,方便後期訪問緊跟着它的內存 (int *) *(int *)(&b) + i 利用地址存儲的機制,+1 自動跳過4(8)個字節,訪問下一個內存內容,訪問存儲在虛函數表裏面的函數地址 (Pfunc)* 將虛函數表李的函數指針地址轉換爲 pFunc 類型的函數指針地址,方便調用 pfc(); 調用 */ pfc = (Pfunc)*((int *) *(int *)(&b) + i); pfc(); } cin.get(); return 0; }