手机Av在线不卡,日韩精品校园婷婷五月天,国产轮理电影一区二区,日韩三级欧美视频

福州博洋教育

[J2EE] [其他計(jì)算機(jī)]
獵學(xué)網(wǎng)訂閱號(hào)
獵學(xué)網(wǎng)官方企業(yè)微信
位置: 獵學(xué)網(wǎng) > 學(xué)校機(jī)構(gòu) > 福州博洋教育 > 學(xué)習(xí)資訊> 博洋教育C++培訓(xùn):初識(shí)c++模板元編程

博洋教育C++培訓(xùn):初識(shí)c++模板元編程

476 2012-09-24

模板元編程(Template metaprogramming,簡(jiǎn)稱TMP)是編譯器內(nèi)執(zhí)行的程序,編譯器讀入template,編譯輸出的結(jié)果再與其他源碼一起經(jīng)過普通編譯過程生成目標(biāo)文件。通俗來說,普通運(yùn)行程序是編譯器生成的機(jī)器碼,由處理器解釋執(zhí)行得到結(jié)果,TMP則是編譯器實(shí)例化template過程中得到結(jié)果。TMP已被證明是圖靈完備的機(jī)器,不過模板實(shí)例化通常需要消耗巨大的編譯器資源,而且難以追蹤錯(cuò)誤,沒有合適的調(diào)試器,所以在實(shí)際開發(fā)中很少使用。

TMP有兩個(gè)重要的作用:

將工作從運(yùn)行期轉(zhuǎn)移到編譯期,一些在運(yùn)行期才能發(fā)現(xiàn)的錯(cuò)誤在編譯時(shí)就找出來了。

產(chǎn)生較小的可執(zhí)行文件,較短的運(yùn)行時(shí)間,較少的內(nèi)存需求。當(dāng)然代價(jià)就是增加了編譯時(shí)間。

下面讓我們來看一個(gè)利用TMP計(jì)算3的冪的例子

template

class Pow3 {

public:

enum {result=3*Pow3::result};

};

template<>

class Pow3<0> {

public:

enum {result=1};

};

int main() {

std::cout《"Pow3<7> = "《Pow3<7>::result《std::endl;

}

Pow<7>的實(shí)例化導(dǎo)致Pow3<6>的實(shí)例化,Pow3<6>又出發(fā)Pow3<5>的實(shí)例化,遞歸直至Pow3<0>結(jié)束,Pow<7>::result直接被常量值替換。

一個(gè)TMP程序可以包含以下幾部分:

狀態(tài)變量:即模板參數(shù)

迭代構(gòu)造:TMP沒有循環(huán)等構(gòu)件,全部用遞歸實(shí)現(xiàn),另一方面遞歸的實(shí)例化也是降低編譯器效率的主要原因。

路徑選擇:通過使用條件表達(dá)式或者特化。

整形算法(即枚舉)

c++中,在類內(nèi)部聲明常量值只有枚舉和靜態(tài)常量初始化兩種方式。上面的例子中可以將枚舉改成靜態(tài)常量,

template

class Pow3 {

public:

static int const result=3*Pow3::result;

};

template<>

class Pow3<0> {

public:

static int const result=1;

};

不過靜態(tài)常量是左值,如果將結(jié)果作為引用參數(shù)傳遞給一個(gè)函數(shù),

void foo(int const&);

foo(Pow3<7>::result);

編譯器必須獲取 Pow3<7>::result的地址,這會(huì)強(qiáng)制編譯器實(shí)例化靜態(tài)成員的定義,并分配內(nèi)存,這就跳出了編譯期范圍。

而枚舉不是左值,沒有這個(gè)約束,通過引用傳遞的時(shí)候跟使用常量值形式是一樣的,所以一般都用枚舉類型。

博洋教育(http://www.softfz.com/)教師簡(jiǎn)介:彭坤容,高級(jí)C語言講師,12年教學(xué)經(jīng)驗(yàn)。

1、做項(xiàng)目擁有一個(gè)團(tuán)結(jié)、合作的團(tuán)隊(duì)非常重要。

2、做項(xiàng)目時(shí),從一開始一定要想好算法,然后按算法做才會(huì)事半功倍。在做的過程中,肯定會(huì)遇到難點(diǎn),那么所要做的就是選擇最適合自己的方法做下去,它不一定是最好的,但確是自己最熟悉的,這樣就會(huì)很快的先把東西做出來,以后有時(shí)間再去研究如何改進(jìn)。無論怎么做,提高的都是技術(shù)。這些技術(shù)如果以后還用得到,提高的就是做項(xiàng)目的進(jìn)度。

3、做開發(fā),C語言功底還是十分重要的。有了好的功底,學(xué)什么語言都會(huì)很快,以后做項(xiàng)目多了,相關(guān)知識(shí)就會(huì)很快融會(huì)貫通。

溫馨提示: 專業(yè)老師1對(duì)1為您解答    馬上填寫,¥1000 元豪禮免費(fèi)領(lǐng)!

掃一掃
獲取更多福利

×
獵學(xué)網(wǎng)
欧美日韩第九页| 男人捅美女机吧免费视频| 亚州欧州精品女一区二区三区| 干美女小穴| 丁香五月亚洲三区亚洲精品| 国产日产久久精品| 五月天激情视频一区| 国产欧美精品久久久久久| 国产三级久久久999555| 高清人妻国产| 国产黄色片精品| 欧美日韩综合在线1guankan| 热久久这里只有精品1| 日本久久成人方视频| 日韩无码一区二区视频 小黄书| 黄色电影网站一区二区三区| 午夜影院黄色电影| 四季人妻在线中文字幕| 美女激情在线亚洲av| 日韩特黄特色免费视频| 韩国自拍偷拍在线| 天天操操操操操操| 一品道亚洲视频在线免费观看| 九九九九九黄色电影网站| 国产欧美二区极品| 日韩狠人妻少| 97一区二区在线| 一二三不卡的| 日日本3级特级不卡| av不卡卡一卡| 好diao妞视频在线观看| spa在线精品成人| 欧美日韩成人直播在线| 色婷婷99二区| 亚洲网站91| 超碰国内偷拍| 日韩在线|中文| 国产成人黄色激情久久| 天天干 天天曰 人人爽| 亚洲色欲24P| 午夜av利|