日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
深度剖析C++語言特點(diǎn)

C++作為一種語言,大多數(shù)的人都是把它默認(rèn)為面向?qū)ο蟮闹С?,認(rèn)為他就是C語言的替代品,一種延伸而已,而事際上,C++與C是完全不同的語言。用過C++語言的朋友都覺得C++語言的確是個(gè)好語言。

創(chuàng)新互聯(lián)提供高防服務(wù)器租用、云服務(wù)器、香港服務(wù)器、雅安服務(wù)器托管

但有時(shí)由于特殊需要,不得不用C++,在C++中要想實(shí)現(xiàn)C#中的Thread等也是可行的,不過代碼要稍復(fù)雜:

 
 
 
  1. //delegate 0  
  2.   #define DEFINE_DELEGATE(NAME, R)\  
  3.   class NAME##Delegate\  
  4.   {\  
  5.   public:\  
  6.   virtual ~NAME##Delegate(void){ }\  
  7.   virtual R operator()(void) = 0;\  
  8.   };\  
  9.   template\  
  10.   class NAME##DelegateImpl : public NAME##Delegate\  
  11.   {\  
  12.   private:\  
  13.   typedef R (C::*F)(void);\  
  14.   C* m_class;\  
  15.   F m_fun;\  
  16.   public:\  
  17.   NAME##DelegateImpl(C* c, F f){ m_class = c; m_fun = f; }\  
  18.   virtual R operator()(void)\  
  19.   {\  
  20.   if(m_class)\  
  21.   return (m_class-*m_fun)();\  
  22.   }\  
  23.   };\  
  24.   template\  
  25.   NAME##Delegate* Make##NAME##Delegate(C* c, F f)\  
  26.   {\  
  27.   return new NAME##DelegateImpl(c, f);\  
  28.   }  
  29.   //////////////////////////////////////////////////////////////////////////  
  30.   //delegate 1  
  31.   #define DEFINE_DELEGATE(NAME, R, P1)\  
  32.   class NAME##Delegate\  
  33.   {\  
  34.   public:\  
  35.   virtual ~NAME##Delegate(void){ }\  
  36.   virtual R operator()(P1 p1) = 0;\  
  37.   };\  
  38.   template\  
  39.   class NAME##DelegateImpl : public NAME##Delegate\  
  40.   {\  
  41.   private:\  
  42.   typedef R (C::*F)(P1);\  
  43.   C* m_class;\  
  44.   F m_fun;\  
  45.   public:\  
  46.   NAME##DelegateImpl(C* c, F f){ m_class = c; m_fun = f; }\  
  47.   virtual R operator()(P1 p1)\  
  48.   {\  
  49.   if(m_class)\  
  50.   return (m_class-*m_fun)(p1);\  
  51.   }\  
  52.   };\  
  53.   template\  
  54.   NAME##Delegate* Make##NAME##Delegate(C* c, F f)\  
  55.   {\  
  56.   return new NAME##DelegateImpl(c, f);\  
  57.   } 

這個(gè)例子比較簡(jiǎn)單C++語言用來實(shí)現(xiàn)某個(gè)功能,client是客戶程序,要想在m_sdk做處理的時(shí)候能發(fā)送通知到client,有幾個(gè)方法可以實(shí)現(xiàn)。其一是發(fā)線程消息,其一是回調(diào),但傳統(tǒng)的回調(diào)對(duì)面向?qū)ο蟮闹С植⒉缓?,這就是實(shí)現(xiàn)delegate的出發(fā)點(diǎn)。 下面是一個(gè)實(shí)現(xiàn): class Delegate

 
 
 
  1. DEFINE_DELEGATE(Open, void, int, string)  
  2.   class sdk  
  3.   {  
  4.   public:  
  5.   OpenDelegate* pEvent;  
  6.   sdk(): pEvent(NULL) { }  
  7.   void Open()  
  8.   {  
  9.   cout  
  10.   if(pEvent != NULL)  
  11.   (*pEvent)(100, "你好");  
  12.   }  
  13.   };  
  14.   class client  
  15.   {  
  16.   private:  
  17.   sdk m_sdk;  
  18.   public:  
  19.   client()  
  20.   {  
  21.   m_sdk.pEvent = MakeOpenDelegate(this, OnOpen2);  
  22.   }  
  23.   void Open()  
  24.   {  
  25.   m_sdk.Open();  
  26.   }  
  27.   void OnOpen()  
  28.   {  
  29.   cout  
  30.   }  
  31.   void OnOpen2(int t, string str)  
  32.   {  
  33.   cout  
  34.   }  
  35.   }; 

【編輯推薦】

  1. C與C++中標(biāo)準(zhǔn)輸入實(shí)現(xiàn)方式上的一點(diǎn)區(qū)別
  2. C++編譯器如何對(duì)Const常量進(jìn)行分配存儲(chǔ)空間
  3. C++類庫設(shè)計(jì)的基本構(gòu)思與方法
  4. 玩轉(zhuǎn)C++語言的幾種方法
  5. 如何更好的進(jìn)行C++代碼編制

標(biāo)題名稱:深度剖析C++語言特點(diǎn)
當(dāng)前鏈接:http://www.5511xx.com/article/djocgdi.html