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

            l

            成都手游碼農(nóng)一枚
            隨筆 - 32, 文章 - 0, 評(píng)論 - 117, 引用 - 0
            數(shù)據(jù)加載中……

            今天遇到一個(gè)有點(diǎn)奇怪的問(wèn)題,關(guān)于模板構(gòu)造函數(shù)。


            關(guān)于模板Default拷貝構(gòu)造函數(shù)與模板Copy拷貝構(gòu)造函數(shù)(- - 我也不知道該不該這么稱呼。。)

            #include <iostream>
            using namespace std;

            template
            <typename _Ty>
            class Test
            {
                
            public:
                    Test()
            {}
                    
                    Test(
            const Test& _t)
                    
            {
                        cout
            <<"Default"<<endl;
                    }


                    template
            <typename _Uy>
                    Test(
            const Test<_Uy>& _t)
                    
            {
                        cout
            <<"Copy"<<endl;
                    }

            }
            ;

            int main()
            {
                Test
            <int> t;
                Test
            <int> d(t);
                Test
            <double> f(t);
                
            return 0;
            }

             
            編譯錯(cuò)誤:

            --------------------Configuration: x - Win32 Release--------------------
            Compiling...
            x.cpp
            D:\書(shū)籍資料\C++Test\c++作業(yè)\asdf\x.cpp(16) : error C2535: '__thiscall Test<_Uy>::Test<_Uy>(const class Test<_Uy> &)' : member function already defined or declared
                    D:\書(shū)籍資料\C++Test\c++作業(yè)\asdf\x.cpp(10) : see declaration of 'Test<_Ty>::Test<_Ty>'
                    D:\書(shū)籍資料\C++Test\c++作業(yè)\asdf\x.cpp(20) : see reference to class template instantiation 'Test<_Ty>' being compiled
            D:\書(shū)籍資料\C++Test\c++作業(yè)\asdf\x.cpp(25) : error C2668: 'Test<int>::Test<int>' : ambiguous call to overloaded function
            Error executing cl.exe.
            Creating browse info file...

            x.exe - 2 error(s), 0 warning(s)



            看下面的代碼:只是將兩個(gè)函數(shù)位置調(diào)換一下就正確了- -;



            #include 
            <iostream>
            using namespace std;

            template
            <typename _Ty>
            class Test
            {
                
            public:
                    Test()
            {}
                    
                    template
            <typename _Uy>
                    Test(
            const Test<_Uy>& _t)
                    
            {
                        cout
            <<"Copy"<<endl;
                    }


                    Test(
            const Test& _t)
                    
            {
                        cout
            <<"Default"<<endl;
                    }


            }
            ;

            int main()
            {
                Test
            <int> t;
                Test
            <int> d(t);
                Test
            <double> f(t);
                
            return 0;
            }


            正確得到結(jié)果:
            Default...
            Copy...
            Press any key to continue



            ----------------------
            VC6.0編譯

            對(duì)于第一種為什么會(huì)造成重定義現(xiàn)在還不是很清楚。。

            最后決定把這個(gè)記錄下來(lái)。


            posted on 2009-10-12 18:49 l1989 閱讀(1071) 評(píng)論(4)  編輯 收藏 引用 所屬分類: C++

            評(píng)論

            # re: 今天遇到一個(gè)有點(diǎn)奇怪的問(wèn)題,關(guān)于模板構(gòu)造函數(shù)。  回復(fù)  更多評(píng)論   

            玩模板,就不要用vc6 ……

            拷貝構(gòu)造函數(shù)的正確寫法是:
            Test(const Test<T>& );
            2009-10-12 20:50 | OwnWaterloo

            # re: 今天遇到一個(gè)有點(diǎn)奇怪的問(wèn)題,關(guān)于模板構(gòu)造函數(shù)。  回復(fù)  更多評(píng)論   

            @OwnWaterloo
            恩 感謝提醒。
            用VS編譯一切正常,以后還是用VS測(cè)試。

            Test(const Test<T>& );
            Test(const Test& );
            我試過(guò)兩種寫法效果一樣,不過(guò)我也不知道他們有沒(méi)有區(qū)別。
            2009-10-12 22:21 | shly

            # re: 今天遇到一個(gè)有點(diǎn)奇怪的問(wèn)題,關(guān)于模板構(gòu)造函數(shù)。  回復(fù)  更多評(píng)論   

            @shly
            最好還是用Test<T>
            2009-10-13 18:21 | 陳梓瀚(vczh)

            # re: 今天遇到一個(gè)有點(diǎn)奇怪的問(wèn)題,關(guān)于模板構(gòu)造函數(shù)。  回復(fù)  更多評(píng)論   

            @陳梓瀚(vczh)
            恩 記住了.
            感謝提醒
            2009-10-13 18:22 | shly
            久久久久波多野结衣高潮| 久久久久亚洲av综合波多野结衣| 九九久久自然熟的香蕉图片| 久久水蜜桃亚洲av无码精品麻豆 | 久久经典免费视频| 一本一本久久a久久综合精品蜜桃| av午夜福利一片免费看久久| 久久国产乱子伦精品免费强| 亚洲人成无码久久电影网站| 麻豆亚洲AV永久无码精品久久| 亚洲国产二区三区久久| 亚洲日韩欧美一区久久久久我| 久久精品夜夜夜夜夜久久| 狠狠人妻久久久久久综合蜜桃| 亚洲精品无码久久千人斩| 国产激情久久久久影院老熟女| 日韩久久久久久中文人妻 | 精品久久香蕉国产线看观看亚洲| 久久播电影网| 77777亚洲午夜久久多喷| 无码任你躁久久久久久| 久久综合丝袜日本网| 无码人妻久久一区二区三区免费丨 | 伊人伊成久久人综合网777| 久久久青草久久久青草| 国内精品久久久久久99| 久久婷婷五月综合色奶水99啪| 久久91精品国产91久久麻豆| 亚洲国产精品久久久天堂| 久久精品人妻中文系列| 午夜精品久久影院蜜桃| 国产精品成人99久久久久| 91精品免费久久久久久久久| 精品999久久久久久中文字幕| 亚洲AV无一区二区三区久久 | 久久久久噜噜噜亚洲熟女综合 | 久久乐国产精品亚洲综合| 久久精品无码一区二区三区日韩 | 国产精品美女久久久久AV福利 | 一本色道久久88综合日韩精品 | 久久激情五月丁香伊人|