• <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>
            隨筆 - 42  文章 - 3  trackbacks - 0
            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            常用鏈接

            留言簿(2)

            隨筆檔案

            文章檔案

            網頁收藏

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            This article is for reading of C++ Templates The Complete Guide.
             
            1 Define a function template:
            template <typename T>
            inline T const& max (T const& a, T const& b)
            {
               return a<b?b:a;
            }
            As seen in this example, template parameters must be announced with syntax of the following form:
            template < comma-separated-list-of-parameters >, the keyword typename introduces a so-called type parameter.

            2 Calling to a function template:
            int i = 42;
            std::cout << "max(7,i): " << ::max(7,i) << std::endl;
            double f1 = 3.4;
            double f2 = -6.7;
            std::cout << "max(f1,f2): " << ::max(f1,f2) << std::endl;
            std::string s1 = "mathematics";
            std::string s2 = "math";
            std::cout << "max(s1,s2): " << ::max(s1,s2) << std::endl;
            Normally, templates aren't compiled into single entities that can handle any type. Instead, different entities are generated from the template for every type for which the template is used.


            3 Note that no automatic type conversion is allowed here. Each must match exactly. For example:
            template <typename T>
            inline T const& max (T const& a, T const& b);

            max(4,7) // OK: T is int for both arguments
            max(4,4.2) // ERROR: first T is int, second T is double
            There are three ways to handle such an error:
            Cast the arguments so that they both match: max(static_cast<double>(4),4.2) // OK
            Specify (or qualify) explicitly the type of T: max<double>(4,4.2) // OK

            4 Class template usage:

            template <typenameTarget>
            class Singleton
            {
            public:
            static Target* Instance() //Static template member function should be impleted in the define of template
            {                                       //notes: it is not a thread safe
             if (m_pInstance==NULL)
              m_pInstance = new Target();

             return m_pInstance;
            }

            protected: //!!set the constructor and destructor to be protected to avoid unnecessary intance
             Singleton(); // constructor
             ~Singleton(); // destructor
            private:
             static  Target* m_pInstance;
            };

            //static class member initialisation should be global
            template <typename Target>
            Target* Singleton<Target>::m_pInstance = NULL;

            int main(int argc, _TCHAR* argv[])
            {
             int* testSingle = Singleton<int>::Instance();
             std::cout<<*testSingle<<std::endl;
            }

            4.1 Nontype Class Template Parameters
            Notype parameter provides a special way to define the property of template. But you cannot use floating-point numbers, class-type objects, and objects with internal linkage (such as string
            literals) as arguments for nontype template parameterstemplate <typename T, int MAXSIZE>
            class Stack {
            private:
            T elems[MAXSIZE]; // elements
            int numElems; // current number of elements
            }
            Stack<int,20> int20Stack; // stack of up to 20 ints

            6.1 The way that including declare and implemention of template in the header file is inclusion model. This kind of model is popular in the development. 
            7.1 The process of creating a regular class, function, or member function from a template by substituting actual values for its arguments is called template instantiation. This resulting entity (class, function, or member function) is generically called a specialization.
            posted on 2012-06-08 18:42 鷹擊長空 閱讀(215) 評論(0)  編輯 收藏 引用
            久久精品国产男包| 久久超乳爆乳中文字幕| 久久久久噜噜噜亚洲熟女综合| 岛国搬运www久久| 久久久久久精品久久久久| 精品无码久久久久国产| 国产精品免费久久| 国产69精品久久久久久人妻精品| 精品无码久久久久久尤物| 亚洲欧洲久久av| 久久精品成人国产午夜| 久久久久久久久66精品片| 久久九九久精品国产免费直播| 国产激情久久久久久熟女老人 | 久久久91人妻无码精品蜜桃HD| 欧美黑人激情性久久| 狠狠色丁香婷婷综合久久来来去 | 国产综合成人久久大片91| 久久久久久九九99精品| 精品久久久久久久国产潘金莲 | 成人亚洲欧美久久久久| 成人国内精品久久久久影院| 中文字幕乱码人妻无码久久| 久久久WWW成人| 精品视频久久久久| 日本精品久久久中文字幕| 精品蜜臀久久久久99网站| 日产精品久久久久久久性色| 久久99国产精品久久99小说| 久久综合伊人77777| 尹人香蕉久久99天天拍| 亚洲人成电影网站久久| 香蕉久久夜色精品国产2020| 午夜精品久久久久| 中文字幕乱码久久午夜| 伊人久久综合精品无码AV专区| 久久国产色av免费看| 午夜精品久久久久久久久| 精品国产一区二区三区久久久狼 | 波多野结衣AV无码久久一区| 国内精品综合久久久40p|