• <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>
            posts - 183,  comments - 10,  trackbacks - 0

            怎樣把函數(shù)模板聲明為類模板的友元

            給類模板聲明友元的函數(shù)模板有三種方式,分別為:
            第一種方式,在模板類內(nèi)部聲明友元的函數(shù)模板
            第二種方式,在模板類內(nèi)部聲明對(duì)應(yīng)版本的友元函數(shù)模板實(shí)例化
             需要前置聲明
             這種方式是最為合理的方式
            第三種方式,在模板類內(nèi)部直接聲明友元函數(shù),不涉及函數(shù)模板
             這種情況只能在模板類內(nèi)部一起把函數(shù)的定義寫出來(lái),不能在外部實(shí)現(xiàn),因?yàn)橥獠啃枰愋蛥?shù),而需要類型參數(shù)就是模板了
             其實(shí)這種情況相當(dāng)于一般的模板類的成員函數(shù),也就是相當(dāng)于一個(gè)函數(shù)模板
             第二種方式也是一個(gè)函數(shù)模板,他們保持函數(shù)的參數(shù)類型和該模板類的實(shí)例一個(gè)類型
             第一種方式更為靈活,他不會(huì)要求參數(shù)類型與模板類實(shí)例是一個(gè)類型,但是一般情況下我們也是按照一個(gè)類型使用的。

             1 #include <iostream>
             2 using namespace std;
             3 
             4 //// 第一種方式,在模板類內(nèi)部聲明友元的函數(shù)模板
             5 //template <typename T>
             6 //class C
             7 //{
             8 //private:
             9 //    T m[5];
            10 //public:
            11 //    template <typename U>
            12 //    friend void foo(const C<U>& T);
            13 //};
            14 //
            15 //template <typename T>
            16 //void foo(const C<T>& t)
            17 //{
            18 //    for (int i = 0; i < 5; ++i)
            19 //    {
            20 //        cout << t.m[i] << endl;
            21 //    }
            22 //}
            23 
            24 // 第二種方式,在模板類內(nèi)部聲明對(duì)應(yīng)版本的友元函數(shù)模板實(shí)例化
            25 // 需要前置聲明
            26 // 這種方式是最為合理的方式
            27 template <typename T>
            28 class C;
            29 
            30 template <typename T>
            31 void foo(const C<T>& t);
            32 
            33 template <typename T>
            34 class C
            35 {
            36 private:
            37     T m[5];
            38 public:
            39     friend void foo<T>(const C<T>& t);
            40 };
            41 
            42 template <typename T>
            43 void foo(const C<T>& t)
            44 {
            45     for (int i = 0; i < 5++i)
            46     {
            47         cout << t.m[i] << endl;
            48     }
            49 }
            50 
            51 //// 第三種方式,在模板類內(nèi)部直接聲明友元函數(shù),不涉及函數(shù)模板
            52 //// 這種情況只能在模板類內(nèi)部一起把函數(shù)的定義寫出來(lái),不能在外部實(shí)現(xiàn),因?yàn)橥獠啃枰愋蛥?shù),而需要類型參數(shù)就是模板了
            53 //// 其實(shí)這種情況相當(dāng)于一般的模板類的成員函數(shù),也就是相當(dāng)于一個(gè)函數(shù)模板
            54 //// 第二種方式也是一個(gè)函數(shù)模板,他們保持函數(shù)的參數(shù)類型和該模板類的實(shí)例一個(gè)類型
            55 //// 第一種方式更為靈活,他不會(huì)要求參數(shù)類型與模板類實(shí)例是一個(gè)類型,但是一般情況下我們也是按照一個(gè)類型使用的。
            56 //template <typename T>
            57 //class C
            58 //{
            59 //private:
            60 //    T m[5];
            61 //public:
            62 //    friend void foo(const C<T>& t)
            63 //    {
            64 //        for (int i = 0; i < 5; ++i)
            65 //        {
            66 //            cout << (t.m[i]) << endl;
            67 //        }
            68 //    }
            69 //};
            70 
            71 int main()
            72 {
            73     // C<int> c;
            74     C<double> c;
            75     foo(c);
            76     return 0;
            77 }


            http://topic.csdn.net/u/20100619/21/c32066bb-dacd-4938-8f95-7345a522b0f6.html
            http://topic.csdn.net/u/20100612/13/9365495d-b1d8-4e87-b704-23895acb1637.html
            http://www.cnblogs.com/wswqwps/archive/2008/10/25/1319320.html
            http://blog.csdn.net/dongzhongshu/archive/2011/02/22/6200466.aspx

            posted on 2011-05-27 23:59 unixfy 閱讀(1892) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            亚洲а∨天堂久久精品| 久久久亚洲欧洲日产国码二区| 88久久精品无码一区二区毛片 | 色99久久久久高潮综合影院| 少妇熟女久久综合网色欲| 久久超碰97人人做人人爱| 国产免费久久久久久无码| 久久亚洲中文字幕精品一区| 精品久久久久久久久中文字幕| 久久五月精品中文字幕| 精品午夜久久福利大片| 亚洲综合伊人久久综合| 久久综合一区二区无码| 中文字幕一区二区三区久久网站| 伊人久久大香线蕉亚洲| 中文字幕无码久久精品青草 | 伊人久久大香线焦综合四虎| 午夜精品久久久久久99热| 性做久久久久久久久老女人| 香港aa三级久久三级| av无码久久久久不卡免费网站 | 精品久久久久久中文字幕大豆网| 亚洲乱亚洲乱淫久久| 久久青草国产手机看片福利盒子| 国产亚洲精久久久久久无码77777| 久久成人精品| 久久精品国产精品亚洲人人| 免费观看久久精彩视频| 精品久久久久久无码中文字幕一区| 久久免费看黄a级毛片| 久久久久久久综合狠狠综合| 香蕉久久夜色精品国产尤物| 亚洲欧洲精品成人久久奇米网| 久久人人爽人人爽人人片AV麻豆| 国产99久久久国产精品~~牛| 亚洲精品国产成人99久久| 大香网伊人久久综合网2020| 久久久久婷婷| 久久精品成人欧美大片| 久久久亚洲欧洲日产国码aⅴ| 久久久精品人妻一区二区三区四|