成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

深度剖析C++語言特點

開發 后端
對第一次接觸到C++語言的用戶和學者來說,了解C++語言的概念是非常重要的,那么就先說一下什么是C++語言,所謂C++語言:是一種使用非常廣泛的計算機編程語言。

C++作為一種語言,大多數的人都是把它默認為面向對象的支持,認為他就是C語言的替代品,一種延伸而已,而事際上,C++與C是完全不同的語言。用過C++語言的朋友都覺得C++語言的確是個好語言。

但有時由于特殊需要,不得不用C++,在C++中要想實現C#中的Thread等也是可行的,不過代碼要稍復雜:

  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.   } 

這個例子比較簡單C++語言用來實現某個功能,client是客戶程序,要想在m_sdk做處理的時候能發送通知到client,有幾個方法可以實現。其一是發線程消息,其一是回調,但傳統的回調對面向對象的支持并不好,這就是實現delegate的出發點。 下面是一個實現: 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++中標準輸入實現方式上的一點區別
  2. C++編譯器如何對Const常量進行分配存儲空間
  3. C++類庫設計的基本構思與方法
  4. 玩轉C++語言的幾種方法
  5. 如何更好的進行C++代碼編制
責任編輯:chenqingxiang 來源: CSDN
相關推薦

2010-02-26 10:38:29

Python語言

2010-01-25 17:29:10

C++語言

2010-01-26 17:16:33

C++應用程序

2010-01-15 10:32:21

C++語言

2010-02-22 18:08:27

Python語言

2010-01-18 18:14:37

VB.NET語言特點

2010-01-28 16:31:54

C++類型

2010-02-26 14:50:17

Python操作語言

2010-01-28 14:54:01

C++資源管理

2010-01-27 15:50:23

C++復雜性

2010-01-13 10:16:42

C++軟件

2010-01-11 10:19:57

C++開發工具

2010-01-11 17:43:23

C++程序設計

2010-01-13 11:14:06

C++虛表

2010-07-05 14:38:34

UML各種圖形

2010-01-12 15:03:33

C++代碼

2015-11-30 11:14:59

C++對象池自動回收

2010-01-14 17:42:47

CC++

2010-03-01 18:33:30

2010-01-13 14:17:53

C++編譯語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99精品免费 | 国产一区二区激情视频 | 高清免费在线 | av在线成人| 色精品| 中文字幕免费中文 | 欧美精品在线免费观看 | 亚洲国产成人久久综合一区,久久久国产99 | 欧美日韩国产精品 | 欧美激情久久久 | 午夜视频在线播放 | av在线免费观看网址 | 亚洲国产精品人人爽夜夜爽 | 99re| 在线观看涩涩视频 | 色综合一区二区三区 | 日本高清中文字幕 | 亚洲精品一区二区网址 | 看真人视频一级毛片 | 久久久久久国产精品免费免费 | 老牛影视av一区二区在线观看 | 欧美成人a| 久久免费小视频 | 国产日韩一区二区三区 | 亚洲一区二区久久久 | 久久免费精品 | 久久久123 | 欧美一级久久 | 91亚洲精品国偷拍自产在线观看 | 久久综合一区 | 色视频网站| 在线观看亚洲 | 成人午夜精品 | 午夜大片| a欧美| 中文字字幕一区二区三区四区五区 | 日本不卡一区 | 国外成人在线视频 | 亚洲综合无码一区二区 | xnxx 日本免费 | 亚洲区一区二区 |