四虎影院在线,亚洲熟妇AV乱码在线观看,成在线人视频免费视频,亚洲Av无码Av日韩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++模板元編程

413 2012-09-24

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

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

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

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

下面讓我們來(lái)看一個(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沒(méi)有循環(huán)等構(gòu)件,全部用遞歸實(shí)現(xiàn),另一方面遞歸的實(shí)例化也是降低編譯器效率的主要原因。

路徑選擇:通過(guò)使用條件表達(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;

};

不過(guò)靜態(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)存,這就跳出了編譯期范圍。

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

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

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

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

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

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

掃一掃
獲取更多福利

×
獵學(xué)網(wǎng)
超碰给我人| 视频一区二区在线观看| 无码免费A| 国产精品视频观看| 五月婷婷综合一区二区| 色欲一二区| 六月丁香激情网| 日韩AV换脸在线| 国产精品自产拍在线观看| 无毒在线三级片| 日日操夜夜操人人操| 亚洲avxxx| www久久综合| 国产亚洲日韩一区二区三区| 茄子视频在线观看97| 亚洲涩图之| 亚洲欧美综合色| 三级中文字幕不卡| 日本三级在线| 日韩欧美激情网| 四虎网站免费影院| 一区二区日韩欧美| 亚洲伊人片| 国产亚洲精品久久久久| 有码精品人妻无| 日韩,国产,欧美一本| 欧美大香蕉久久| 伊人国内精品在线| 欧美人与物videos另类| 色视频综合站| 国产肛交一区二区三区| 亚洲黄色在线播放| 丁香六月久久开心| 久久国产免费福利永久| 亚洲色图综合一区| 成年人黄毛片| 97久久超碰日韩精品| 国产 亚洲 传媒| 国精产品一品二品国精品69XX| 伊人久久十八| 国产情侣高潮对白|