国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++模板類的用法實例

2020-01-26 15:14:54
字體:
來源:轉載
供稿:網友

本文實例講述了C++中模板類的用法,分享給大家供大家參考。具體方法如下:

//#include "StdAfx.h #ifndef __AFXTLS_H__ #define __AFXTLS_H__ #include <Windows.h> class CSimpleList { public:   CSimpleList(int nNextOffset=0);   void Construct(int nNextOffset);   //接口   BOOL IsEmpty() const;   void AddHead(void *p);   void RemoveAll();   void* GetHead() const;   void* GetNext(void* preElement) const;   BOOL Remove(void* p);    //為實現接口所需的成員   void  *m_pHead;   size_t m_nextOffset;   void** GetNextPtr(void* preElement) const; };  //類的內聯函數 inline CSimpleList::CSimpleList(int nNextOffset)   {m_pHead = NULL; m_nextOffset = nNextOffset;  }  inline void CSimpleList::Construct(int nNextOffset)   {m_nextOffset = nNextOffset;  }  inline BOOL CSimpleList::IsEmpty() const {   return m_pHead==NULL; } //inline void AddHead(void *p) //{ // //} inline void CSimpleList::RemoveAll() {   m_pHead = NULL; } inline void* CSimpleList::GetHead() const {   return m_pHead; } inline void* CSimpleList::GetNext(void* preElement) const {   return *GetNextPtr(preElement); } //inline BOOL CSimpleList::Remove(void* p) //{ // //} inline void**  CSimpleList::GetNextPtr(void* preElement) const {   return (void**)((BYTE*)preElement+m_nextOffset); }   //定義模板類 template<class TYPE>  class CTypedSimpleList:public CSimpleList { public:   CTypedSimpleList(int nNextOffset=0)     :CSimpleList(nNextOffset){}   void Construct(int nNextOffset);   //接口   void AddHead(TYPE p)   {     CSimpleList::AddHead((void*)p);   }   TYPE GetHead()   {     return (TYPE)CSimpleList::GetHead();   }   TYPE GetNext(TYPE preElement)   {     return (TYPE)CSimpleList::GetNext((void*)preElement);   }   BOOL Remove(TYPE p)   {     return CSimpleList::Remove(p);   }      //直接引用類的對象會調用此函數   operator TYPE()   {     return (TYPE)CSimpleList::GetHead();   } }; #endif 

模板類的用法:

//測試模板類   MyThreadData* pTempData;   CTypedSimpleList<MyThreadData*> templateList;   list.Construct(offsetof(MyThreadData, pNext));   //向鏈表中加數據   for (int i=100;i<110;i++)   {     pTempData = new MyThreadData;     pTempData->nShortData = i;     templateList.AddHead(pTempData);   }    //遍歷鏈表,釋放對象占用的資源   pTempData = templateList;   while (pTempData)   {     MyThreadData* pNextTempData = pTempData->pNext;     printf("TemplateDateList=%d/n",pTempData->nShortData);     delete pTempData;     pTempData = pNextTempData;   }

希望本文所述對大家的C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌乐县| 增城市| 漯河市| 汾阳市| 丰县| 哈尔滨市| 五家渠市| 深泽县| 甘洛县| 台江县| 北辰区| 定州市| 应城市| 镇宁| 克拉玛依市| 尚志市| 雷波县| 迁西县| 平谷区| 长子县| 团风县| 秭归县| 兴城市| 莱州市| 大余县| 梅州市| 南宁市| 灵川县| 苏州市| 泰顺县| 那曲县| 台中市| 云霄县| 桦川县| 铁岭市| 丹寨县| 富源县| 临沧市| 子洲县| 泸水县| 绥滨县|