最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++模板類的用法實例

 更新時間:2014年10月12日 09:44:24   投稿:shichen2014  
這篇文章主要介紹了C++模板類的用法實例,以實例形式詳細講述了模板類的接口、成員、內聯(lián)函數(shù)等概念及用法,需要的朋友可以參考下

本文實例講述了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); 
 
  //為實現(xiàn)接口所需的成員 
  void  *m_pHead; 
  size_t m_nextOffset; 
  void** GetNextPtr(void* preElement) const; 
}; 
 
//類的內聯(lián)函數(shù) 
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); 
  } 
   
  //直接引用類的對象會調用此函數(shù) 
  operator TYPE() 
  { 
    return (TYPE)CSimpleList::GetHead(); 
  } 
}; 
#endif 

模板類的用法:

//測試模板類 
  MyThreadData* pTempData; 
  CTypedSimpleList<MyThreadData*> templateList; 
  list.Construct(offsetof(MyThreadData, pNext)); 
  //向鏈表中加數(shù)據(jù) 
  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++程序設計有所幫助。

相關文章

  • C++詳解使用floor&ceil&round實現(xiàn)保留小數(shù)點后兩位

    C++詳解使用floor&ceil&round實現(xiàn)保留小數(shù)點后兩位

    這篇文章主要介紹了C++使用floor&ceil&round實現(xiàn)保留小數(shù)點后兩位的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 深入理解C++ 空類大小

    深入理解C++ 空類大小

    本文主要介紹了C++ 空類大小,規(guī)定空類大小為1字節(jié),主要是為了保證對象的唯一性和可區(qū)分性,滿足數(shù)組元素地址連續(xù)的要求,下面就來了解一下
    2025-01-01
  • C/C++編程語言中的指針(pointer)你了解嗎

    C/C++編程語言中的指針(pointer)你了解嗎

    這篇文章主要為大家詳細介紹了C/C++編程語言中的指針,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Linux下編譯C程序的過程

    Linux下編譯C程序的過程

    我們總是在Linux下輸入 gcc -o app main.c 即可編譯好程序,對于具體的詳細過程及流程,相信親們就不太了解啦!下面給大家展示一下C編譯器的解釋全過程。
    2016-01-01
  • 深入理解void以及void指針的含義

    深入理解void以及void指針的含義

    本篇文章對小編void以及void指針的含義進行了詳細的分析和介紹。需要的朋友參考下
    2013-05-05
  • C語言詳解實現(xiàn)字符菱形的方法

    C語言詳解實現(xiàn)字符菱形的方法

    字符菱形是指給定一個字符,用它構造一個對角線長5個字符,傾斜放置的菱形。輸入輸入只有一行, 包含一個字符。輸出該字符構成的菱形
    2022-04-04
  • C語言之把數(shù)組名作函數(shù)參數(shù)的四種情況說明

    C語言之把數(shù)組名作函數(shù)參數(shù)的四種情況說明

    這篇文章主要介紹了C語言之把數(shù)組名作函數(shù)參數(shù)的四種情況說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 如何用C寫一個web服務器之CGI協(xié)議

    如何用C寫一個web服務器之CGI協(xié)議

    本文主要介紹了如何用C寫一個web服務器之CGI協(xié)議,對C語言和web感興趣的同學,可以詳細看下,并且試驗一下。
    2021-05-05
  • C++語言實現(xiàn)hash表詳解及實例代碼

    C++語言實現(xiàn)hash表詳解及實例代碼

    這篇文章主要介紹了C++語言實現(xiàn)hash表詳解及實例代碼的相關資料,需要的朋友可以參考下
    2017-01-01
  • C++類的大小介紹

    C++類的大小介紹

    這篇文章主要介紹了C++類的大小,在C++中,結構體和類的唯一區(qū)別就是結構體和類具有不同的默認訪問控制屬性,下面一起進入文章查看詳細內容
    2021-11-11

最新評論

合阳县| 莱州市| 和硕县| 新疆| 永寿县| 安图县| 商丘市| 平罗县| 达孜县| 岳普湖县| 乌兰浩特市| 吉林市| 安顺市| 沾化县| 桐乡市| 伊川县| 准格尔旗| 仪征市| 麻江县| 视频| 永平县| 明光市| 琼中| 东兰县| 武定县| 和顺县| 家居| 彝良县| 大名县| 江孜县| 延安市| 鄱阳县| 黄浦区| 天柱县| 建德市| 秀山| 博兴县| 安顺市| 准格尔旗| 左贡县| 区。|