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

            成都手游碼農一枚
            隨筆 - 32, 文章 - 0, 評論 - 117, 引用 - 0
            數據加載中……

            今天遇到一個有點奇怪的問題,關于模板構造函數。


            關于模板Default拷貝構造函數與模板Copy拷貝構造函數(- - 我也不知道該不該這么稱呼。。)

            #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;
            }

             
            編譯錯誤:

            --------------------Configuration: x - Win32 Release--------------------
            Compiling...
            x.cpp
            D:\書籍資料\C++Test\c++作業\asdf\x.cpp(16) : error C2535: '__thiscall Test<_Uy>::Test<_Uy>(const class Test<_Uy> &)' : member function already defined or declared
                    D:\書籍資料\C++Test\c++作業\asdf\x.cpp(10) : see declaration of 'Test<_Ty>::Test<_Ty>'
                    D:\書籍資料\C++Test\c++作業\asdf\x.cpp(20) : see reference to class template instantiation 'Test<_Ty>' being compiled
            D:\書籍資料\C++Test\c++作業\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)



            看下面的代碼:只是將兩個函數位置調換一下就正確了- -;



            #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;
            }


            正確得到結果:
            Default...
            Copy...
            Press any key to continue



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

            對于第一種為什么會造成重定義現在還不是很清楚。。

            最后決定把這個記錄下來。


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

            評論

            # re: 今天遇到一個有點奇怪的問題,關于模板構造函數。  回復  更多評論   

            玩模板,就不要用vc6 ……

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

            # re: 今天遇到一個有點奇怪的問題,關于模板構造函數。  回復  更多評論   

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

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

            # re: 今天遇到一個有點奇怪的問題,關于模板構造函數。  回復  更多評論   

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

            # re: 今天遇到一個有點奇怪的問題,關于模板構造函數。  回復  更多評論   

            @陳梓瀚(vczh)
            恩 記住了.
            感謝提醒
            2009-10-13 18:22 | shly
            欧美日韩精品久久久久| A级毛片无码久久精品免费| 色欲综合久久中文字幕网| 久久精品国产亚洲av麻豆图片 | 亚洲香蕉网久久综合影视| 精品久久久久久亚洲精品| 国产69精品久久久久9999| 欧美成人免费观看久久| 国产国产成人精品久久| 国产69精品久久久久观看软件| 国产日产久久高清欧美一区| 久久国产精品无| 久久美女人爽女人爽| 国产A三级久久精品| 久久99精品免费一区二区| 久久婷婷国产综合精品| 久久国产亚洲精品| 久久亚洲高清综合| 伊人丁香狠狠色综合久久| 久久精品国产亚洲AV香蕉| 国内精品久久久久影院老司| 亚洲国产二区三区久久| 国产精品久久久久AV福利动漫| 99久久无色码中文字幕人妻| 久久这里都是精品| 久久天天日天天操综合伊人av| 精品久久久久久无码中文字幕一区| 久久亚洲精品国产亚洲老地址| 色综合久久中文字幕综合网 | 久久婷婷色综合一区二区| 亚洲中文字幕伊人久久无码| 欧美一级久久久久久久大| 久久99精品久久久久久秒播 | 久久精品国产亚洲AV不卡| 欧美激情精品久久久久久久九九九 | 九九精品久久久久久噜噜| 国产精品永久久久久久久久久 | 18禁黄久久久AAA片| 思思久久好好热精品国产| 中文精品久久久久人妻不卡| 久久精品日日躁夜夜躁欧美|