青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆 - 8  文章 - 26  trackbacks - 0
<2025年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用鏈接

留言簿(5)

隨筆檔案

文章分類

文章檔案

相冊

C++語言

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

轉(zhuǎn)載自:http://dev.csdn.net/article/3/3354.shtm
 

/*******************************************************************************
 *  SGI*STL是STL之父Alexander Stepanov和STL巨匠Matt Austern等人的作品, 是當(dāng)今  *
 *  最富盛名、最出色的STL實現(xiàn)版本,全部源代碼和說明文檔可從www.sgi.com/STL/下  *
 *  載, 是我們學(xué)習(xí)STL的最佳范本. 但是眾所周知, STL使用了大量復(fù)雜艱深的C++特性, *
 *  加上STL本身的復(fù)雜和龐大, 使得閱讀代碼本身就成為一件非常困難的工作. 以下文  *
 *  字是我在學(xué)習(xí)STL過程中得到的一些經(jīng)驗和猜測, 希望能對大家有所幫助, 更希望能  *
 *  得到大家的批評和指正, 以利于我們的共同提高.                                *
 *                                                                      myan   *
 *******************************************************************************/

在SGI*STL源代碼里, typename這個新的C++關(guān)鍵字得使用可以說是隨處可見. 很多以前學(xué)習(xí)過
C++的人可能還不認(rèn)識typename, 其實它的常規(guī)用法很簡單: 在聲明模板函數(shù)或者模板類時,
傳統(tǒng)的寫法:
template <class T>
generic_function() {
//........
}

亦可以寫成
template <typename T>
         ------------
generic_func() {
//...............
}
引入這個關(guān)鍵字主要是為了避免class可能給人帶來的混淆.
本來typename的用法就是這么簡單, 但是STL源代碼中還有typename的一種不常見的用法, 如果
不了解, 閱讀源代碼時就會遇到困難. 因為目前我找不到有關(guān)這個問題的說明, 所以自己試驗了
一下, 得到一個猜測, 現(xiàn)簡介如下, 請有識之士斧正.

首先看一段SGI*STL源代碼, 摘自stl_iterator.h

1: template <class _Container, class _Iterator>
2: inline insert_iterator<_Container> inserter(_Container& __x, _Iterator __i)
3: {
4:   typedef typename _Container::iterator __iter;
5:   return insert_iterator<_Container>(__x, __iter(__i));
6:  }

令人費解的部分在第四行. 請大家在看我的解釋之前先想一想, 我不敢保證下面解釋的正確性和
全面性.

解釋:
    我認(rèn)為typename的語義是: 通知編譯器, 在typename后面被聲明的東西是一個類型, 而不是別的
什么東西.

 

 1例子:
 2// tpname.cpp
 3#include <iostream>
 4#include <typeinfo>  // for typeid() operator
 5
 6using namespace std;
 7
 8template <typename TP>
 9struct COne {   // default member is public
10    typedef TP one_value_type;
11}
;
12
13template <typename COne>   // 用一個模板類作為模板參數(shù), 這是很常見的
14struct CTwo {
15    // 請注意以下兩行
16    // typedef COne::one_value_type  two_value_type;   // *1
17    typedef typename COne::one_value_type  two_value_type;      // *2  
18}
;
19
20// 以上兩個模板類只是定義了兩個內(nèi)部的public類型, 但請注意第二個類CTwo的two_value_type類型
21// 依賴COne的one_value_type, 而后者又取決于COne模板類實例化時傳入的參數(shù)類型.
22
23int main()
24{
25    typedef COne<int> OneInt_type;
26    typedef CTwo< OneInt_type > TwoInt_type;
27    TwoInt_type::two_value_type i;
28    int j;
29    if ( typeid(i) == typeid(j) )   // 如果i是int型變量
30        cout << "Right!" << endl;   // 打印Right
31    return;
32}

33//  ~tpname.cpp
34

 

以上例子在Linux下用G++ 2.91編譯通過, 結(jié)果打印"Right". 但是如果把*1行的注釋號去掉, 注釋
*2行, 則編譯時報錯, 編譯器不知道COne::one_value_type為何物. 通常在模板類參數(shù)中的類型到
實例化之后才會顯露真身, 但這個CTwo類偏偏又要依賴一個已經(jīng)存在的COne模板類, 希望能夠預(yù)先
保證CTwo::two_value_type與COne::one_value屬于同一類型, 這是就只好請typename出山, 告訴
編譯器, 后面的COne::one_value_type是一個已經(jīng)存在于某處的類型的名字(type name), 這樣編譯
器就可以順利的工作了.

posted on 2008-06-24 21:56 楊彬彬 閱讀(235) 評論(0)  編輯 收藏 引用 所屬分類: C++語言
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产美女诱惑一区二区| 亚洲美女免费精品视频在线观看| 91久久夜色精品国产网站| 欧美日韩一区不卡| 欧美精品免费观看二区| 欧美巨乳波霸| 欧美少妇一区| 国产亚洲欧美一区二区三区| 国语自产偷拍精品视频偷| 亚洲大片在线| 一区二区三区www| 麻豆乱码国产一区二区三区| 久久夜色精品亚洲噜噜国产mv | 亚洲视频播放| 午夜久久黄色| 蜜臀久久99精品久久久久久9| 亚洲国产日韩在线| 亚洲成人中文| 欧美中文字幕第一页| 久久国产精品色婷婷| 欧美电影在线观看| 亚洲色图自拍| 久久婷婷一区| 国产精品大片wwwwww| 在线电影一区| 亚洲欧美日韩在线高清直播| 免费看亚洲片| 午夜在线不卡| 欧美人与禽猛交乱配| 国产在线拍揄自揄视频不卡99| 亚洲国产精品美女| 午夜精品福利在线| 亚洲国产老妈| 欧美在线亚洲在线| 国产精品sm| 亚洲精品国产精品国自产在线| 亚洲欧美日韩人成在线播放| 亚洲电影免费观看高清| 亚洲欧美日韩成人| 欧美午夜视频在线| 99re8这里有精品热视频免费| 久久午夜电影| 亚洲伊人伊色伊影伊综合网| 欧美日韩国产首页在线观看| 在线成人亚洲| 久久一本综合频道| 欧美一区二区三区啪啪| 国产精品视频不卡| 亚洲视频专区在线| 亚洲精品一区二区在线| 欧美国产一区视频在线观看| 在线观看欧美日韩| 久久综合伊人77777蜜臀| 亚洲一区二区三区欧美 | 国产亚洲精品美女| 欧美一区二区日韩一区二区| 亚洲毛片在线免费观看| 欧美激情精品久久久久久黑人| 今天的高清视频免费播放成人 | 亚洲国产精品成人| 麻豆久久婷婷| 亚洲精选91| 亚洲精品国产系列| 欧美日韩三区| 亚洲欧美激情精品一区二区| 亚洲欧美中文日韩v在线观看| 最新国产成人av网站网址麻豆| 美女网站在线免费欧美精品| 激情伊人五月天久久综合| 美女主播精品视频一二三四| 久久一区精品| 亚洲欧洲一区| 亚洲精品乱码久久久久久黑人| 欧美久久视频| 亚洲欧美视频在线观看| 午夜老司机精品| 激情婷婷欧美| 亚洲国产影院| 国产精品电影在线观看| 久久er精品视频| 久久亚洲不卡| 亚洲一区二区精品在线| 午夜视频一区在线观看| 亚洲第一页在线| 亚洲精品字幕| 国产在线一区二区三区四区| 久久这里有精品15一区二区三区| 久久久噜噜噜久久中文字免| 亚洲巨乳在线| 午夜久久美女| 亚洲美女免费精品视频在线观看| 日韩午夜av电影| 黄色一区二区三区| 亚洲精品之草原avav久久| 国产麻豆综合| 亚洲大片av| 国产欧美日韩亚洲一区二区三区| 欧美成人国产va精品日本一级| 欧美精品激情blacked18| 亚洲欧美伊人| 欧美国产一区视频在线观看| 久久福利毛片| 欧美三区在线视频| 欧美一区二区视频在线观看2020| 久久久久久久久久久久久9999| 一区二区三区日韩精品视频| 欧美中文字幕| 亚洲自拍偷拍网址| 欧美国产综合视频| 免费亚洲婷婷| 狠狠狠色丁香婷婷综合久久五月| 亚洲毛片视频| 亚洲精品日韩久久| 久久亚洲一区二区三区四区| 午夜激情一区| 欧美日韩中文精品| 91久久精品国产91久久性色| 在线观看国产精品淫| 亚洲欧美中文另类| 这里只有精品丝袜| 欧美精品手机在线| 亚洲韩国日本中文字幕| 韩国精品在线观看| 欧美亚洲视频| 久久国产天堂福利天堂| 国产精品一区=区| 亚洲系列中文字幕| 亚洲午夜av电影| 欧美日韩另类视频| 亚洲精品久久久久久久久| 亚洲福利视频免费观看| 久久久久久亚洲综合影院红桃| 欧美日韩一二三区| 日韩午夜中文字幕| 国产精品99久久久久久有的能看| 久久综合色婷婷| 欧美大片在线影院| 亚洲国产精品久久久久婷婷老年| 久久天天躁狠狠躁夜夜爽蜜月 | 免费成人激情视频| 黄色亚洲免费| 久久久综合视频| 蜜桃久久精品乱码一区二区| 激情91久久| 欧美成人综合网站| 亚洲久久成人| 亚洲小说春色综合另类电影| 欧美日韩成人在线播放| 亚洲精品日韩激情在线电影| 中国成人在线视频| 国产精品福利网| 午夜国产精品视频免费体验区| 欧美一级理论性理论a| 国产亚洲精品久久久久婷婷瑜伽| 欧美亚洲专区| 欧美jizz19性欧美| 一区二区av在线| 国产免费成人av| 久久频这里精品99香蕉| 亚洲欧洲午夜| 欧美一级淫片aaaaaaa视频| 国产有码在线一区二区视频| 欧美一区二区视频网站| 欧美国产激情| 午夜一区不卡| 亚洲福利在线观看| 国产精品成人一区二区三区吃奶| 亚洲欧美国内爽妇网| 免费日韩精品中文字幕视频在线| 亚洲美女av黄| 国产视频综合在线| 欧美劲爆第一页| 欧美在线日韩| 亚洲另类自拍| 久久综合九色99| 亚洲一区二区三区乱码aⅴ| 国产午夜精品在线| 欧美精选午夜久久久乱码6080| 午夜精品福利视频| 亚洲精品久久7777| 美女网站在线免费欧美精品| 亚洲一卡二卡三卡四卡五卡| 黄色日韩网站视频| 国产精品久久久一区二区| 麻豆精品视频在线观看视频| 亚洲图片在区色| 亚洲激情小视频| 麻豆国产精品一区二区三区| 亚洲在线观看视频网站| 亚洲国产裸拍裸体视频在线观看乱了中文 | 久久免费视频这里只有精品| 一区二区三区回区在观看免费视频| 久久久久久久久岛国免费| 亚洲午夜久久久| 亚洲人午夜精品| 亚洲高清视频的网址| 国产日韩在线看| 在线高清一区| 欧美h视频在线| 欧美一区二区三区日韩视频|