程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> c++ 橋式設計模式 概述

c++ 橋式設計模式 概述

編輯:關於C語言
 

終於在高人的指點下明白了為什麼要有虛類這麼東西。

我的理解是,方便了擴展性。c++的巨大優勢也是面向對象,比c從頭到尾的形式擴展性上很多。比如說,對於一個求解的問題,我有兩種方法A 和 B,和兩種取已知值的方法為a 和b。

可能調用 A(a) 也可能是 B(a)。 這時,可以用c++的橋模式:

class A:base

{

qiujie(); 

private:

 auto_ptr<model> ptr;

}

class B:base

{

B()

qiujie(){

ptr ->yizhi();

}

auto_ptr<model> ptr;

}

class a:model

{

yizhi();

}

class b:model

{

yizhi();

}

 

class manger   

{   
public:   
   manger(int a)   
   {   
       if(a == 1)              
          ptr.reset(new A());   
       else 
          ptr.reset(new B());     
   }     
   void run(){return ptr->qiujie();}           
private:   
   auto_ptr<base> ptr;     //智能指針。就是動態分配對象以及當對象不再需要時自動執行清理。http://www.chinaitpower.com/A/2003-06-17/47697.html auto_ptr 需要頭文件 #include<memory>
};  
int main(int argc, char *argv[])   
{   
    manger m(1);   
    m.run();    
       
    system("PAUSE");   
    return EXIT_SUCCESS;   
}

 


 

而以後有更多 算法 C 和D後 只需要增加類C和D ,再改調用函數manner就可以了。

2、auto_ptr不能指向數組
3、auto_ptr不能作為容器的成員。
4、不能通過賦值操作來初始化auto_ptr
    std::auto_ptr<int> p(new int(42));     //OK

p.reset(new int(42));
    std::auto_ptr<int> p = new int(42);    //ERROR
   這是因為auto_ptr 的構造函數被定義為了explicit  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved