手机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++模板元編程

474 2012-09-24

模板元編程(Template metaprogramming,簡稱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/)教師簡介:彭坤容,高級(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)
欧美午夜伦理三级在线观看| 久久嗯嗯嗯| AV美女AV在线| 欧美夜夜精品一| 日本一区国产的| 亚州日本黄色性视频| 国产中文sm调教视频在线观看 | 欧美亚洲老熟妇| 大鸡八猛插逼逼视频| 国产女大学生自拍四区| 亚洲无码黄色成人小说| 欧美一级黄片吃奶头| 国产伦精一区二区三区免费| 嗯啊操日本骚穴视频| 久久精品国产99久久精品| 亚洲av在线观看免费成人| 午夜影院黄色片黄| 精品午夜极品内射少妇| 成人骚熟妇在线| 亚洲高清四区五区| 欧美日韩亚洲国产重口另类| 四五十路熟女三级片| 国产在线 日韩 欧美| 亚洲无码啪啪啪一区二区免费| 久久一区二区日韩精品四季网| 欧美国产亚洲肥婆一区二区| 欧美第一页亚洲日韩欧美| 欧姜特黄片| 国产高清无码不卡在线观看二区| 日韩无码中文字幕亚洲解说| 天天操天天干天天去| 欧美级无码| 日韩免费成人不卡AV| 视频亚洲一区二区图片| 国产二区性爱| 久久国产伊人| 日本人人爽99| 欧美乱亚州图区| 激情天天| 首页欧美国产日韩| 天天爽天天爽天天射免费影院|