青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級(jí)} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

C++模版使用技巧--Int2Type


一  Int2Type
平常我們所看到的int是一個(gè)類型,例如1,2,3...等屬于int。 但是這里說(shuō)的是通過(guò)模版使每一個(gè)int類型變量都當(dāng)成是不同的類型。
二 C++模版的遲綁定
這個(gè)名字是我起的,因?yàn)椴恢勒降姆Q呼是什么,意思是說(shuō)在使用C++的模版的時(shí)候,只有在你的代碼里面調(diào)用了某個(gè)模版方法,在編譯的時(shí)候才會(huì)產(chǎn)生對(duì)應(yīng)的方法,也即編譯后的代碼中不包含我們沒(méi)有使用的模版方法。看下面的實(shí)例是可以編譯運(yùn)行的:
class X {
public:
  
void f() {}
}
;

class Y {
public:
  
void g() {}
}
;

template 
<typename T> class Z {
  T t;
public:
  
void a() { t.f(); }
  
void b() { t.g(); }
}
;

int main() {
  Z
<X> zx;
  zx.a(); 
// Doesn't create Z<X>::b()
  Z<Y> zy;
  zy.b(); 
// Doesn't create Z<Y>::a()
}
 ///:~

三 問(wèn)題

template <typename T, bool isPolymorphic>
class NiftyContainer
{   
   
void DoSomething()
   
{
      T
* pSomeObj = ;
      
if (isPolymorphic)
      
{
         T
* pNewObj = pSomeObj->Clone();
 
      }

      
else
      
{
         T
* pNewObj = new T(*pSomeObj);
         
      }

   }

}
;
class Test
{
public:
    Test()
{};
}
;

void main()
{
    NiftyContainer
<Test,true> test;
    
//test.DoSomething(); // 這里通不過(guò)編譯
    
}
大家也許會(huì)說(shuō)上面的方法代碼沒(méi)有問(wèn)題,我說(shuō),有問(wèn)題,仔細(xì)看一開始的代碼和我的說(shuō)明,我說(shuō)的是只要我們的代碼里面用到模版方法就會(huì)被編譯為目標(biāo)代碼,而不是說(shuō)在代碼運(yùn)行的時(shí)候使用到的代碼才會(huì)被編譯為目標(biāo)代碼,好的,搞清楚了這個(gè)就可以知道上面的實(shí)例為什么通不過(guò)編譯了。
四 Int2Type
下面正式進(jìn)入主題Int2Type的作用和使用,上面的實(shí)例,我們傳入的T類型中只有clone或public構(gòu)造函數(shù)中的一個(gè),我們想根據(jù)bool值來(lái)選擇使用clone或new,但是上面的代碼有問(wèn)題,編譯都不過(guò)偶,下面使用Int2Type來(lái)實(shí)現(xiàn):

template <int v>
struct Int2Type
{
   
enum { value = v };
}
;


template 
<typename T, bool isPolymorphic>
class NiftyContainer
{
private:
   
void DoSomething(T* pObj, Int2Type<true>)
   
{
      T
* pNewObj = pObj->Clone();
    
   }

   
void DoSomething(T* pObj, Int2Type<false>)
   
{
      T
* pNewObj = new T(*pObj);
      
   }

public:
   
void DoSomething(T* pObj)
   
{
      DoSomething(pObj, Int2Type
<isPolymorphic>());
   }

}
;
class Test
{
public:
    Test()
{};
}
;
void main()
{
    NiftyContainer
<Test,false> test; //如果用ture不會(huì)通過(guò)編譯
    Test* t = new Test();
    test.DoSomething(t);
}

看了上面的代碼,我不禁要再次的贊嘆《C++設(shè)計(jì)新思維》的作者,高!

posted on 2007-05-24 20:01 夢(mèng)在天涯 閱讀(2640) 評(píng)論(1)  編輯 收藏 引用 所屬分類: CPlusPlus

評(píng)論

# re: C++模版使用技巧--Int2Type 2007-05-24 20:06 夢(mèng)在天涯

想看更強(qiáng)的Type2Type,請(qǐng)參看《C++設(shè)計(jì)新思維》  回復(fù)  更多評(píng)論   

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計(jì)

  • 隨筆 - 461
  • 文章 - 4
  • 評(píng)論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1815003
  • 排名 - 5

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              欧美中文字幕不卡| 美女成人午夜| 激情视频一区| 国产中文一区二区三区| 国产有码在线一区二区视频| 国际精品欧美精品| 亚洲国产成人在线| 在线视频亚洲一区| 欧美一级片一区| 亚洲砖区区免费| 亚洲欧美日韩精品综合在线观看| 亚洲砖区区免费| 久久国产精彩视频| 欧美jizzhd精品欧美巨大免费| 亚洲激情视频| 在线中文字幕一区| 欧美在线一级va免费观看| 欧美xxx成人| 国产精品jizz在线观看美国| 国产在线乱码一区二区三区| 日韩午夜激情| 久久九九国产精品| 亚洲黄色有码视频| 久久av一区二区三区漫画| 欧美成人资源网| 国产手机视频精品| 一本一本久久a久久精品牛牛影视| 久久精品视频播放| 亚洲黄色在线| 久久这里只有| 国产精品久久久久久久久免费桃花| 亚洲电影在线免费观看| 亚洲欧美视频在线| 91久久精品国产91性色| 久久精品99无色码中文字幕| 欧美午夜精品久久久久久浪潮 | 欧美韩日精品| 亚洲一区国产精品| 欧美理论电影在线播放| 亚洲第一精品夜夜躁人人爽| 欧美中文日韩| 一区二区三区四区国产| 毛片一区二区| 红杏aⅴ成人免费视频| 亚洲综合国产激情另类一区| 亚洲国产欧美一区二区三区久久| 久久国产一区二区| 国产精品久久久久一区二区三区 | 亚洲色图综合久久| 欧美成人r级一区二区三区| 午夜精品久久久久久久白皮肤| 欧美日韩一区二区视频在线观看| 亚洲激情在线播放| 欧美黄网免费在线观看| 久久免费视频一区| 激情欧美日韩| 久久在线免费观看视频| 欧美有码在线视频| 激情成人av在线| 久久久人人人| 久久久久久69| 欧美在线free| 亚洲午夜在线观看| 欧美小视频在线观看| 一区二区三区四区国产精品| 亚洲免费播放| 国产精品人人做人人爽| 午夜精品久久久久久久99樱桃| 国产精品99久久不卡二区| 国产精品久久久久久久app| 香蕉久久一区二区不卡无毒影院| 亚洲一区二区三区精品在线观看 | 国产精品免费网站| 香蕉久久久久久久av网站| 亚洲欧美日韩系列| 红桃视频欧美| 91久久精品国产| 欧美日韩中文| 久久久久久有精品国产| 久久综合图片| 亚洲图片在线| 久久国产福利| 99精品国产高清一区二区| 这里只有精品电影| 国产一区二区欧美| 亚洲国产日韩一区二区| 国产精品h在线观看| 男人的天堂亚洲在线| 欧美噜噜久久久xxx| 篠田优中文在线播放第一区| 久久久7777| 亚洲免费视频观看| 久久一区免费| 欧美一区精品| 欧美精品1区2区3区| 久久精品理论片| 欧美精品免费在线观看| 久久精品最新地址| 欧美日韩免费观看一区| 男女精品视频| 国产欧美日韩另类一区| 亚洲精品美女91| 一区二区三区在线高清| 一级日韩一区在线观看| 在线观看欧美| 欧美一二三区精品| 亚洲伊人网站| 欧美大片免费观看| 久久影院亚洲| 国产欧美日韩在线观看| 亚洲精品小视频在线观看| 尤物九九久久国产精品的分类| 一区二区三区**美女毛片| 亚洲人成网站777色婷婷| 欧美一区二区三区视频| 亚洲欧美激情诱惑| 欧美三级在线视频| 亚洲人线精品午夜| 亚洲国产精品久久精品怡红院| 午夜欧美不卡精品aaaaa| 亚洲视频一区二区免费在线观看| 蜜乳av另类精品一区二区| 伊人久久大香线蕉av超碰演员| 午夜精品亚洲一区二区三区嫩草| 欧美v日韩v国产v| 开心色5月久久精品| 国产日韩欧美精品在线| 亚洲视频 欧洲视频| 一本色道久久综合一区| 欧美福利专区| 亚洲激情视频在线| 亚洲激情第一页| 老司机一区二区三区| 蜜臀av性久久久久蜜臀aⅴ| 狠狠色狠狠色综合日日tαg| 久久99伊人| 久久综合网络一区二区| 在线成人激情视频| 久久一区亚洲| 亚洲国产一区二区a毛片| 亚洲国产婷婷综合在线精品 | 久久一区二区视频| 国产主播精品| 久久五月婷婷丁香社区| 欧美成人一品| 亚洲欧洲在线播放| 欧美精品日韩精品| 亚洲美女毛片| 欧美一区午夜精品| 国产日韩亚洲欧美综合| 久久精品亚洲精品| 欧美成人黑人xx视频免费观看| 亚洲毛片播放| 欧美特黄a级高清免费大片a级| 亚洲永久精品大片| 欧美成人一二三| 亚洲小说欧美另类社区| 国产精品日韩精品| 久久久91精品国产一区二区三区| 欧美激情视频一区二区三区免费| 亚洲理论电影网| 国产精品日本欧美一区二区三区| 欧美一区二区三区免费视| 欧美国产日韩一区二区三区| 99精品视频一区二区三区| 国产精品国产馆在线真实露脸 | 欧美一区二区三区在线观看| 国产日韩欧美不卡| 麻豆视频一区二区| 99视频一区二区三区| 久久精品一二三区| 亚洲精品视频啊美女在线直播| 欧美午夜精品久久久久久人妖| 久久aⅴ乱码一区二区三区| 亚洲激情六月丁香| 久久国产精品久久国产精品| 91久久精品国产91性色| 国产欧美日韩91| 欧美日韩久久精品| 久久精品国产精品亚洲精品| 亚洲精品视频免费观看| 久久久久国产精品厨房| 一区二区三区成人| 激情视频一区二区| 欧美日韩在线精品| 免费看的黄色欧美网站| 亚洲欧美精品在线| 亚洲麻豆视频| 欧美激情视频一区二区三区不卡| 欧美成人精品一区| 亚洲视频免费在线| 国产色综合久久| 欧美激情bt| 久久久久91| 一道本一区二区| 亚洲国产小视频在线观看| 久久夜色撩人精品| 欧美永久精品| 亚洲欧美日韩国产一区二区| 亚洲美女免费精品视频在线观看|