• <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>

            隨筆 - 25, 文章 - 0, 評論 - 6, 引用 - 0
            數(shù)據(jù)加載中……

            《c Templates 》筆記

            1、Function Templates(函數(shù)模版)

            例:
            tempalte <typename T>
            T GetMax(T a, T b)
            {
             return a < b ? b : a;
            }

            /// 重載
            tempalte <typename T>
            T GetMax(T a, T b, T c)
            {
             return (c < GetMax(a, b) ? GetMax(a, b) : c);
            }

            /// 默認(rèn)類型
            template <typename T=int>
            T GetMax(T a, T b)
            {
             retrun a < b ? b : a;
            }

            2、Class Templates(類模版)
            例:
            template <typename T>
            class MyStack
            {
             friend class CFriend1;   // 普通友元類不需要先申明
             friend class CFriend2<T>; // error, 友元模板類必須先申明

             public:
              void Push(T const&);
              void Pop();
              T Top() const;
              bool Empty() const;
             private:
              std::vector<T> elems;
            };

            void MyStack<T>::Push(T const& e)
            {
             elems.push_back(e);
            }

            /// 繼承
            template <typename T>
            class Derived : public MyStack<T>
            {
            public:
             void Test()
             {
              Top(); // 應(yīng)該使用this->Top() 或 MyStack<T>::Top(), 否則就調(diào)用外部Top(),或者編譯錯誤
             }

             /// 成員模版函數(shù),不能是virtual
             template <typename T2>
             void Test2()
             {
              
             }
            };


            3、NonType Templates(非類型模版參數(shù))
            局限性:通常只能是常數(shù)整數(shù)(包括enum)和指向局部變量的指針。
            例:
            template <typename T, int MAXSIZE>
            struct NonTypeStruct
            {
             T elems[MAXSIZE];
            };


            4、typename 關(guān)鍵字
            typename是在C++標(biāo)準(zhǔn)化工程中被引入的,目的是向編譯器說明template內(nèi)部的某個表示符號是個類型。
            例:
            template<typename T>
            struct MyStruct
            {
             typename T::SubType* m_Ptr; // 表示m_Ptr是指向SubType是T內(nèi)部類型的一個指針,若沒有typename,就表

            示T的靜態(tài)變量SubType乘以m_Ptr。
            };

            5、雙重模版參數(shù)
            例:
            template <typename T, template <typename> class CT>
            class DoubleTemplate
            {
             CT<t> m_ct; 
            };
            DoubleTemplate<int, std::vector> dbTemplate; // 類中定義了一個vector<int>的成員屬性m_ct;

            6、模板的申明和定義必須在同一個文檔中,否則會出現(xiàn)連接錯誤
            例:
            // Test.h
            template <typename T>
            T Max(T a);

            // Test.cpp
            template <typename T>
            T Max(T a) { return a; }

            // Main.cpp
            #include "Test.h"

            void main()
            {
             int a = Max<int>(1); // error LNK2019,除非同時(shí) #inclde "test.cpp"
            }

            7、模版類不能和其它不同類型的實(shí)體同名。
            例:
            int c;
            class c; // ok,普通類可以
            template <typename T>
            class c; // error,模板類不行

            8、在類中聲明友元模版類
            例:
            class Manager
            {
             template <typename T>
             friend class Task;
            };

            9、看看小細(xì)節(jié)
            例:
            template <bool b>
            class Invert
            {
             public:
              static bool const result = !b;
            };
            bool bTest = Invert<(1>0)>::result; // (1>0)小括號必須存在

            std::vector<std::list<int> > vectList; // <std::list<int> >空格必須存在

            posted on 2013-05-30 15:36 chenjt3533 閱讀(242) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

            中文精品99久久国产| 狠狠色丁香久久婷婷综合| 97精品久久天干天天天按摩| 久久久亚洲欧洲日产国码aⅴ| 色播久久人人爽人人爽人人片AV| 久久久午夜精品| 韩国三级大全久久网站| 国产激情久久久久影院老熟女免费| 久久午夜福利电影| 嫩草伊人久久精品少妇AV| 成人亚洲欧美久久久久| 狠狠色丁香婷婷久久综合五月 | 久久久久亚洲AV成人网人人网站| 欧美久久久久久| 精品久久久久久综合日本| 亚洲欧洲中文日韩久久AV乱码| 日韩精品无码久久久久久| 亚洲?V乱码久久精品蜜桃| 996久久国产精品线观看| 久久久精品久久久久特色影视| 久久久久女人精品毛片| 麻豆久久| 99久久精品国产一区二区蜜芽| 久久久久久亚洲精品成人| 性高湖久久久久久久久AAAAA| 日韩精品久久久久久| 99精品久久精品一区二区| 欧美国产成人久久精品| 国内精品久久久久久久久| 色偷偷888欧美精品久久久| 午夜人妻久久久久久久久| 久久久久亚洲国产| 要久久爱在线免费观看| 亚洲欧美成人久久综合中文网| 91超碰碰碰碰久久久久久综合| 国内精品久久国产大陆| 久久精品国产亚洲AV电影| 日韩精品久久无码人妻中文字幕| 久久丫忘忧草产品| 久久人妻AV中文字幕| 国产精品美女久久福利网站|