• <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>
            隨筆 - 30, 文章 - 0, 評(píng)論 - 64, 引用 - 0
            數(shù)據(jù)加載中……

            模板與多文件工程

            template <class T> // 最常用的:一個(gè)class 參數(shù)。

            template <class T, class U> // 兩個(gè)class 參數(shù)。

            template <class T, int N> // 一個(gè)class 和一個(gè)整數(shù)。

            template <class T = char> // 有一個(gè)默認(rèn)值。

            template <int Tfunc (int)> // 參數(shù)為一個(gè)函數(shù)。

            從編譯器的角度來(lái)看,模板不同于一般的函數(shù)或類。
            它們?cè)谛枰獣r(shí)才被編譯(compiled on demand),
            也就是說(shuō)一個(gè)模板的代碼直到需要生成一個(gè)對(duì)象的時(shí)候(instantiation)才被編譯。
            當(dāng)需要instantiation的時(shí)候,編譯器根據(jù)模板為特定的調(diào)用數(shù)據(jù)類型生成一個(gè)特殊的函數(shù)。


            當(dāng)工程變得越來(lái)越大的時(shí)候,程序代碼通常會(huì)被分割為多個(gè)源程序文件。
            在這種情況下,通常接口(interface)和實(shí)現(xiàn)(implementation)是分開(kāi)的。


            用一個(gè)函數(shù)庫(kù)做例子
                 接口通常包括所有能被調(diào)用的函數(shù)的原型定義。
                                                它們通常被定義在以.h 為擴(kuò)展名的頭文件 (header file) 中;
                  而實(shí)現(xiàn) (函數(shù)的定義) 
                                                則在獨(dú)立的C++代碼文件中。


            模板這種類似宏(macro-like) 的功能,對(duì)多文件工程有一定的限制:
            函數(shù)或類模板的實(shí)現(xiàn) (定義) 必須與原型聲明在同一個(gè)文件中
            也就是說(shuō)我們不能再 將接口(interface)存儲(chǔ)在單獨(dú)的頭文件中,
            而必須將接口和實(shí)現(xiàn)放在使用模板的同一個(gè)文件中。

            回到函數(shù)庫(kù)的例子,如果我們想要建立一個(gè)函數(shù)模板的庫(kù),我們不能再使用頭文件(.h) ,取而代之,我們應(yīng)該生成一個(gè)模板文件(template file),將函數(shù)模板的接口和實(shí)現(xiàn) 都放在這個(gè)文件中 (這種文件沒(méi)有慣用擴(kuò)展名,除了不要使用.h擴(kuò)展名或不要不加任何擴(kuò)展名)。


            在一個(gè)工程中多次包含同時(shí)具有聲明和實(shí)現(xiàn)的模板文件并不會(huì)產(chǎn)生鏈接錯(cuò)誤 (linkage errors),因?yàn)樗鼈冎挥性谛枰獣r(shí)才被編譯,而兼容模板的編譯器應(yīng)該已經(jīng)考慮到這種情況,不會(huì)生成重復(fù)的代碼。

            posted on 2008-12-08 12:03 henry08 閱讀(474) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++

            狠狠色丁香久久婷婷综| 久久精品国产亚洲Aⅴ香蕉| 亚洲第一永久AV网站久久精品男人的天堂AV | 国产成人精品久久亚洲| 狠狠色综合网站久久久久久久| 久久国产香蕉视频| 久久国产色AV免费观看| Xx性欧美肥妇精品久久久久久| 亚洲精品久久久www| 大伊人青草狠狠久久| 欧美久久天天综合香蕉伊| 亚洲国产精品无码久久SM| 久久美女网站免费| 久久久久久曰本AV免费免费| 国产精品久久久久9999| 久久九九兔免费精品6| 欧美综合天天夜夜久久| 性欧美大战久久久久久久久 | 国产精品狼人久久久久影院| 一本色道久久88—综合亚洲精品| 91精品国产91久久| 国内精品伊人久久久久AV影院| 久久久久亚洲AV无码专区网站| AV色综合久久天堂AV色综合在| 亚洲伊人久久综合中文成人网| 日韩欧美亚洲综合久久影院d3| 久久青青草原亚洲av无码app| 亚洲国产精品狼友中文久久久| 99久久夜色精品国产网站| 久久久久久久久无码精品亚洲日韩| 午夜视频久久久久一区| 久久久久99精品成人片三人毛片 | 久久香蕉超碰97国产精品| 久久人人青草97香蕉| 欧美日韩精品久久久免费观看| 日本精品久久久久中文字幕| 99国产欧美精品久久久蜜芽| 精品蜜臀久久久久99网站| 中文国产成人精品久久不卡| 国产免费久久精品99re丫y| 国产99久久久国产精品小说|