• <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>
            萬星星@豌豆莢 歡迎加入我們
            一個吃軟飯的男人!!!!!我只想寫程序####
            微博:http://weibo.com/wanlianwen
            posts - 172,  comments - 1253,  trackbacks - 0
            第9章 模板中的名字
            名字在大多數(shù)編程語言中都是最基本的概念,程序員用它來引用先前創(chuàng)建的對象。當(dāng)C++編譯器遇到一個名字,它要去查找并識別哪個對象被引用。從實現(xiàn)者角度來看,C++在一種強類型語言??紤]表達式X*Y:如果X和Y都是變量名,那么是乘法表達式;如果X是類型名,這條語句把Y聲明為X類型的一個指針。

            這個例子表明C++(和C一樣)是上下文敏感的語言:如果沒有上下文,一條程序指令很難被編譯器理解。這與模板有什么關(guān)系呢?嗯,模板必須處理更多的上下文:(1)模板內(nèi)部上下文;(2)模板實例化時的上下文;(3)模板實例化時模板參數(shù)的上下文。在C++中必須小心處理名字,對此你不應(yīng)該感到驚訝。

            9.1 名字分類學(xué)
            事實上C++的名字分類有很多種。為了便于記憶,我們提供了表格9.1和表格9.2描述了這些分類。幸運的是你只用熟悉下面2種主要的命名概念,就可以很好的理解C++模板中遇到的問題:

            1、限定名:名字在作用域中被顯式指示作用域解析運算符(::)或者成員訪問運算符(.或者->)。例如:this->count是限定名,而count不是(盡管count有可能是某個類的成員)。
            2、依賴名:名字依賴于模板參數(shù)。例如:std::vector<T>::iterator,如果T是模板參數(shù),iterator就是依賴名;如果T是已知類型(比如int),iterator就是非依賴名。

            表格?9.1.?名字分類學(xué) (第一部分)

            分類

            注釋

            標(biāo)識符

            由字符、下劃線(_)和數(shù)字組成的名字,不能以數(shù)字開頭。有一些標(biāo)識符是保留的,你不能在自己程序中引入它們(一種避免引入的笨方法是以_或者__作為前綴)。字符的概念很廣泛,包括對非字母語言編碼的特殊字符。

            操作符類

            關(guān)鍵字operator 后面跟著一個符號。例如operator new和operator []。很多操作符都是多義的,例如operator &可以是按位與運算,也可以是取地址運算。

            轉(zhuǎn)換類

            指示用戶定義的隱式類型轉(zhuǎn)換。例如operator int&,我們可以把它轉(zhuǎn)換成int類型的位與操作

            模板類

            template后面跟著<>,里面是模板參數(shù)。例如List<T, int, 0>(嚴格講,C++標(biāo)準(zhǔn)只允許簡單的標(biāo)識符為模板名,或許有爭議說操作符類也是允許的;例如:operator+<X<int> >)。

            非限定類

            更一般的標(biāo)識符。可以是上面幾類(標(biāo)識符、操作符類、轉(zhuǎn)換類或模板類)或者是析構(gòu)名(例如,像~Data?或 ~List<T, T, N>之類的符號)。

            限定類

            非限定類前面加上類或者名字空間限定,或者全局作用域解析運算符。注意一個名字本身可以是限定的,例如::X, S::x, Array<T>::y, and ::N::A<T>::z。

            限定名

            這個名詞在標(biāo)準(zhǔn)中是沒有的,我們用它來表示執(zhí)行限定查找的名字。特定情況下,就是限定標(biāo)識或者在非限定標(biāo)識前面顯式使用成員訪問運算符(.?或者 ->)。例如S::x, this->f,?和 p->A::m。然而,除了class_mem 和this->class_mem在上下文環(huán)境中是等同的情況下不需要限定名,其他情況下必須顯式使用成員訪問運算符。

            非限定名

            非限定標(biāo)識不是非限定名。這也不是一個標(biāo)準(zhǔn)中的術(shù)語,但是相當(dāng)于執(zhí)行非限定查找中的名字。


            表格?9.2. 名字分類學(xué) (第二部分)

            分類

            注釋

            名字

            限定或者非限定的名字。

            依賴名

            名字依賴于模板參數(shù)。任何含有模板參數(shù)的限定或者非限定名字都是依賴名。此外,成員訪問操作符(.->) 修飾的限定名 ,如果操作符左邊的表達式類型依賴于模板參數(shù),那么這個限定名是依賴的。尤其這種情況:this->b中的b在模板中便是依賴名。最后,ident(x, y, z)調(diào)用形式中的ident當(dāng)且僅當(dāng)參數(shù)表達式中有類型依賴于模板參數(shù)。

            非依賴名

            不符合上面描述的名字就不是依賴名。


            上面這些名詞通常用來描述C++模板中的問題,通讀一邊是很有用的,我們可以熟悉這些名詞,但沒有必要記住每個名詞確切的意思。需要的時候,我們可以通過索引很容易的查閱。
            posted on 2006-04-08 11:38 萬連文 閱讀(1243) 評論(0)  編輯 收藏 引用 所屬分類: 模板
            簡歷下載
            聯(lián)系我

            <2006年8月>
            303112345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿(66)

            隨筆分類

            隨筆檔案

            相冊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            久久久WWW成人免费毛片| 久久97久久97精品免视看| 国产69精品久久久久9999APGF| 亚洲精品无码久久久| 亚洲AV无码久久精品色欲| 久久91精品国产91久久小草| 精品无码久久久久久国产| 中文字幕精品无码久久久久久3D日动漫| 久久人人爽人人爽人人片AV东京热 | 欧美噜噜久久久XXX| 久久精品国产69国产精品亚洲| 久久久久国产一区二区三区| 欧美va久久久噜噜噜久久| 久久99精品久久久久久野外| 欧美va久久久噜噜噜久久| 久久无码国产| 国产精品美女久久久网AV| 久久久婷婷五月亚洲97号色| 久久中文精品无码中文字幕 | 狠狠色综合网站久久久久久久| 无码国内精品久久人妻蜜桃| 午夜精品久久久内射近拍高清 | 天天影视色香欲综合久久| 国产美女久久久| 亚洲乱码中文字幕久久孕妇黑人| 中文字幕亚洲综合久久2| 久久亚洲春色中文字幕久久久| 午夜精品久久久久久影视777| 91亚洲国产成人久久精品| 久久香蕉超碰97国产精品| 国产精品久久久久久久久软件| 精品久久久久久无码中文字幕| 97精品伊人久久大香线蕉app| 亚洲中文字幕久久精品无码APP | 亚洲精品高清一二区久久| 久久国产精品二国产精品 | 亚洲午夜无码久久久久小说 | 国内精品久久久人妻中文字幕 | 久久久久久久久久免免费精品 | 久久人人爽人人爽人人片AV不 | 国产99久久精品一区二区|