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

那誰的技術(shù)博客

感興趣領(lǐng)域:高性能服務(wù)器編程,存儲(chǔ),算法,Linux內(nèi)核
隨筆 - 210, 文章 - 0, 評(píng)論 - 1183, 引用 - 0
數(shù)據(jù)加載中……

Modern C++ Design(MCD)學(xué)習(xí)筆記 && 測(cè)試代碼(二)

/* *******************************************************************
????created:????2007/02/04
????filename:?????CanConverse.cpp
????author:????????Lichuang
????????????????
????????????????VC7,GCC下均可以編譯通過
********************************************************************
*/

#include?
< iostream >

using ? namespace ?std;

template?
< class ?T,? class ?U >
class ?Conversion
{
private :
????
// ?sizeof(char)?==?1,這是標(biāo)準(zhǔn)規(guī)定的
????typedef? char ?Small;
????
// ?sizeof(Big)?==?2?*?sizeof(char)?>?sizeof(char)
???? class ?Big???? {? char ?dummy[ 2 ];?} ;
????
// ?Test型別是U,返回值是Small
???? static ?Small?Test(U);
????
// ?Test型別是任意型別,返回值是Big
???? static ?Big?Test();
????
// ?返回一個(gè)T型別的值
???? static ?T?MakeT();

public :

????
// ?exists的值反映了T是否可以轉(zhuǎn)換為U
????
// ?MakeT首先返回一個(gè)T型別的值,?傳入Test()中
????
// ?如果編譯器確定T可以轉(zhuǎn)換為U,那么調(diào)用返回Small的Test函數(shù)
????
// ?否則調(diào)用返回Big的Test函數(shù),則sizeof(Big)?!=?sizeof(Small)
????
// ?對(duì)于一般的型別如int,?char,double,float而言只是進(jìn)行隱性的轉(zhuǎn)換
????
// ?但是對(duì)于傳入類指針的情況而言,那么派生類的指針可以轉(zhuǎn)換為基類的指針
????
// ?也正是基于這一點(diǎn)可以作為檢查兩個(gè)類是否有繼承關(guān)系的技巧
???? enum ?
????
{
????????exists?
= ? sizeof (Test(MakeT()))? == ? sizeof (Small)
????}
;

????
// ?型別T,U是否可以雙向轉(zhuǎn)換
???? enum
????
{
????????exists2Way?
= ?exists? && ?Conversion < U,?T > ::exists
????}
;

????
// ?是否是同一個(gè)型別
???? enum
????
{
????????sameType?
= ? false
????}
;
}
;

// ?針對(duì)同一個(gè)型別的模版偏特化類
template? < class ?T >
class ?Conversion < T,?T >
{
public :
????
enum
????
{
????????exists?
= ? 1 ,
????????exists2Way?
= ? 1 ,
????????sameType?
= ? 1
????}
;
}
;

// ?檢查U是否是T的派生類的宏
// ?第一條語句檢查是否存在U*向T*的轉(zhuǎn)換,如果存在上述關(guān)系那么派生類指針U*可以轉(zhuǎn)換為基類指針T*
// ?第二條檢測(cè)派生類指針是不是和void*是一個(gè)型別的
#define ?SUPERSUBCLASS(T,?U)????\
????(Conversion
< const ?U * ,? const ?T *> ::exists? && ????\
????
! Conversion < const ?T * ,? const ? void *> ::sameType)

class ?Base
{
}
;

class ?Derive
????:?
public ?Base
{
}
;

class ?Test
{
}
;

int ?main()
{
????cout?
<< ?Conversion < double ,? int > ::exists? << ? ' ? ' ? << ?endl;

????
if ?(SUPERSUBCLASS(Base,?Derive))
????
{
????????cout?
<< ? " can?derive\n " ;
????}

????
if ?( ! SUPERSUBCLASS(Base,?Test))
????
{
????????cout?
<< ? " Can?not?derive\n " ;
????}


????
return ? 0 ;
}


說明的注釋都在sample代碼里面了,我想無需做太多的解釋,直接看代碼就好了。

posted on 2007-02-04 23:18 那誰 閱讀(2012) 評(píng)論(5)  編輯 收藏 引用 所屬分類: C\C++

評(píng)論

# re: Modern C++ Design(MCD)學(xué)習(xí)筆記 && 測(cè)試代碼(二)  回復(fù)  更多評(píng)論   

加油,我以看完了。不好搞明白的東西。多寫代碼,即使是把它的代碼一個(gè)一個(gè)
的重復(fù)的寫一邊和編譯一邊也是非常有意的。

推薦看看 c++ template 中文版(要是能看懂英文當(dāng)然更是號(hào))。這本書對(duì)模板技術(shù)的表達(dá)的還是非常全面的。

boost中的MPL庫是用來完成編譯器編程的,非常的不錯(cuò),有空可以研究一下那個(gè)里面的代碼。boost的基礎(chǔ)就是模板。

stl并不是單純的用了模板技術(shù),而是用那個(gè)技術(shù)實(shí)現(xiàn)了范型,個(gè)人覺得用模板技術(shù)和范型思想,完全是對(duì)傳統(tǒng)的面向?qū)ο蠹夹g(shù)的顛覆。非常的時(shí)尚
2007-02-04 23:49 | walkspeed

# re: Modern C++ Design(MCD)學(xué)習(xí)筆記 && 測(cè)試代碼(二)  回復(fù)  更多評(píng)論   

簡(jiǎn)單來說,boost的MPL有很多實(shí)際上是用來解決編譯期的運(yùn)算能力的限制問題。也就是說,tips和tricks影響了boost.MPL的可理解性。而且boost.MPL本身就是為了輔助模版程序的開發(fā)而存在的,所以如果沒什么必要,可以不深究。loki和stl相對(duì)簡(jiǎn)單,對(duì)模版能力運(yùn)用的側(cè)重點(diǎn)上又有所不同,可以好好的看看。(個(gè)人以為,模版不全是為了泛型,元編程才是模版的真正意義所在。至于泛型,只是說在C++上用模版來實(shí)現(xiàn)的而已。)

在C++0x提供了Concept以后,boost的MPL應(yīng)該會(huì)簡(jiǎn)化很多的。

還有就是模版不是拿來顛覆面向?qū)ο蟮摹K兔嫦驅(qū)ο蠡旧蠜]有什么交叉和沖突,應(yīng)該算得是一個(gè)很有力的補(bǔ)充。
2007-02-05 14:00 | 空明流轉(zhuǎn)

# re: Modern C++ Design(MCD)學(xué)習(xí)筆記 && 測(cè)試代碼(二)[未登錄]  回復(fù)  更多評(píng)論   

看來回貼的兄弟研究過boost眾的mpl了。對(duì)范型很有些了解也。

我對(duì)范型中的concept概念十分的感興趣。這個(gè)東西對(duì)解耦十分棒,而且對(duì)設(shè)計(jì)思維的擴(kuò)展真是不錯(cuò)。
2007-02-05 21:18 | walkspeed

# re: Modern C++ Design(MCD)學(xué)習(xí)筆記 && 測(cè)試代碼(二)  回復(fù)  更多評(píng)論   

喜歡這個(gè)blog, 加油
2007-02-05 22:16 | xbluewing

# re: Modern C++ Design(MCD)學(xué)習(xí)筆記 && 測(cè)試代碼(二)  回復(fù)  更多評(píng)論   

個(gè)人認(rèn)為,boost.MPL是專門for Metaprogramming的,MPL=MetaProgramming Library嘛,而不是為了Template開發(fā)的。C++的Metaprogramming一定要用Template實(shí)現(xiàn),但Template不一定就要用于Metaprogramming,如STL就不能算Metaprogramming,至少其中大部分不能算。
《Modern C++ Design》是一本好書,樓主看完后,如果對(duì)Metaprogramming感興趣的話,可以再去看《C++ Template Metaprogramming》,肯定會(huì)大開眼界。只是Metaprogramming對(duì)于大多數(shù)程序員來說,并不是必修課,看你自己的興趣了。
2007-02-10 10:13 | alai04
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产中文一区| 欧美制服丝袜| 亚洲欧美综合精品久久成人| 亚洲精品乱码视频 | 国产精品一区在线观看| 欧美色一级片| 国产精品美女999| 国产美女在线精品免费观看| 国产一区二区三区奇米久涩| 在线不卡中文字幕| 亚洲精品九九| 亚洲午夜精品视频| 久久激情视频| 亚洲国产精品热久久| 91久久午夜| 亚洲一区在线观看免费观看电影高清| 亚洲一区二区三区中文字幕在线| 先锋亚洲精品| 欧美黄色aa电影| 国产精品主播| 亚洲精品社区| 欧美一级视频免费在线观看| 欧美77777| 亚洲制服av| 欧美国产日本在线| 国产美女精品一区二区三区| 最新亚洲电影| 久久精品国产亚洲一区二区三区| 欧美激情一区二区久久久| 一本色道久久88亚洲综合88| 久久久久久九九九九| 欧美女同视频| 一色屋精品视频在线观看网站| 一本色道久久综合亚洲精品高清| 久久精品欧美日韩| 一本久久综合亚洲鲁鲁| 免费一区二区三区| 国产在线麻豆精品观看| 亚洲神马久久| 亚洲国产高清视频| 久久久综合精品| 国产欧美另类| 亚洲欧美国产精品桃花| 亚洲高清二区| 久久人人97超碰国产公开结果| 欧美特黄a级高清免费大片a级| 在线精品视频一区二区| 久久久91精品国产一区二区三区 | 久久久久.com| 国产精品入口福利| 欧美成人午夜激情| 午夜久久久久久久久久一区二区| 欧美v国产在线一区二区三区| 国产日韩欧美在线| 先锋影音网一区二区| 亚洲免费黄色| 欧美日韩人人澡狠狠躁视频| 亚洲精品1234| 亚洲国产欧美不卡在线观看| 噜噜噜91成人网| 亚洲国产天堂久久国产91| 老牛嫩草一区二区三区日本| 久久国产福利国产秒拍| 国产在线精品一区二区中文| 久久久久9999亚洲精品| 久久精品91久久久久久再现| 黄色欧美日韩| 欧美成人免费在线观看| 欧美成人精品一区二区三区| 亚洲巨乳在线| 一本色道久久88综合亚洲精品ⅰ| 欧美亚日韩国产aⅴ精品中极品| 亚洲一区二区三区三| 亚洲欧美日本国产专区一区| 国产一区二区三区在线观看精品| 乱人伦精品视频在线观看| 欧美mv日韩mv国产网站| 亚洲视频碰碰| 欧美一区二区成人6969| 亚洲国产mv| 99视频日韩| 国产一区高清视频| 亚洲国产一区二区三区高清| 国产精品电影观看| 老司机成人网| 欧美日韩一区二区在线播放| 欧美在线免费看| 久久一区欧美| 亚洲一区二区三区高清不卡| 欧美在线播放一区| 亚洲人成人一区二区三区| 一区二区三区国产盗摄| 韩日欧美一区二区| 日韩视频在线永久播放| 国产婷婷一区二区| 亚洲国产精品成人一区二区| 国产精品久久久久久福利一牛影视| 午夜在线精品| 欧美成年人网站| 欧美伊人久久久久久午夜久久久久 | 欧美黄免费看| 国产精品欧美日韩| 亚洲国产精品久久人人爱蜜臀| 国产精品日韩二区| 亚洲区国产区| 亚洲国产精品高清久久久| 亚洲免费影视第一页| 99视频+国产日韩欧美| 久久国产婷婷国产香蕉| 亚洲在线一区二区三区| 免费在线看一区| 亚洲影视在线| 日韩亚洲一区二区| 欧美在线亚洲综合一区| 中文欧美在线视频| 久久天天躁夜夜躁狠狠躁2022| 在线视频欧美一区| 美女视频黄a大片欧美| 欧美在线观看视频在线| 欧美日韩国产美女| 欧美国产精品v| 狠狠88综合久久久久综合网| 亚洲午夜一区二区| 夜夜嗨av一区二区三区中文字幕| 久久精品夜色噜噜亚洲aⅴ| 欧美一区二区视频在线观看2020| 欧美日韩国产在线观看| 亚洲电影第三页| 亚洲国产精品成人综合色在线婷婷| 午夜精品偷拍| 欧美专区日韩专区| 国产精品主播| 午夜久久久久| 久久精品99国产精品酒店日本| 国产精品久久久99| 亚洲网站在线看| 午夜精品一区二区三区在线视| 欧美日韩一区二区三区在线看| 亚洲精品婷婷| 一本色道久久综合狠狠躁的推荐| 免费看亚洲片| 亚洲国产综合在线看不卡| 亚洲人在线视频| 欧美高清不卡在线| 最新国产の精品合集bt伙计| 一道本一区二区| 欧美午夜无遮挡| 亚洲综合色婷婷| 久久精品一区四区| 激情伊人五月天久久综合| 久久琪琪电影院| 亚洲激情第一区| 在线视频免费在线观看一区二区| 欧美日韩久久精品| 亚洲一区二区三区四区五区黄| 欧美一区二区三区在线视频 | 国产欧美日韩一区二区三区| 亚洲一区二区在线免费观看| 久久精品动漫| 亚洲国产裸拍裸体视频在线观看乱了| 免费看精品久久片| 一区二区91| 久久亚洲国产精品一区二区| 亚洲欧洲一级| 国产精品入口福利| 美女图片一区二区| 亚洲天堂成人| 免费日韩精品中文字幕视频在线| 亚洲美女av电影| 国产日韩欧美电影在线观看| 你懂的视频欧美| 亚洲小说区图片区| 欧美v日韩v国产v| 亚洲免费中文| 亚洲人体大胆视频| 国产有码一区二区| 欧美日韩三级一区二区| 久久精品国产亚洲a| 亚洲欧美日韩精品在线| 亚洲欧洲另类| 免费h精品视频在线播放| 亚洲第一福利社区| 一本到高清视频免费精品| 欧美午夜一区二区福利视频| 欧美在线播放一区| 亚洲国产欧美在线 | 狠狠色综合网站久久久久久久| 欧美mv日韩mv亚洲| 欧美在线观看一区二区| 亚洲乱码国产乱码精品精可以看 | 久久久噜噜噜久久中文字幕色伊伊 | 你懂的视频欧美| 欧美一区免费视频| 99精品国产一区二区青青牛奶| 久久免费99精品久久久久久| 亚洲一区二区三区乱码aⅴ| 91久久夜色精品国产网站| 黑人一区二区三区四区五区| 国产伦精品一区二区| 欧美午夜一区二区三区免费大片|