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

            勤能補拙,Expter

            成都游戲Coder,記錄游戲開發過程的筆記和心得!

            一些代碼總結(特化類的友元模板重載,常見內存泄漏)

            A.特化類的友元模板函數的操作符重載

            最近寫一測試代碼關于特化類的友元模板函數的操作符重載遇到一問題。
            先貼一個錯誤代碼:
             1#pragma region 類DTest信息
             2
             3// 聲明一個類
             4template<class Type , int dim>
             5class DTest
             6{
             7public:
             8    // 構造函數
             9    DTest()
            10    {
            11        memset(_cords,0,sizeof(_cords));
            12    }

            13    DTest(Type cord[dim])
            14    {
            15        memcpy(_cords,cord,sizeof(cord));
            16    }

            17
            18    // 友元模板
            19    friend ostream & operator << (ostream & out , const DTest<Type,dim> & data);
            20
            21private:
            22  Type _cords[dim];
            23}
            ;
            24// 友元模板的實現
            25template<class Type, int dim>
            26ostream & operator << (ostream & out , const DTest<Type,dim> & data)
            27{
            28    for(int i = 0 ; i < dim-1 ; i++)
            29        out << data._cords[i] <<" ";
            30
            31    out <<endl;
            32    return out;
            33}

            34
            35#pragma endregion


            用devc++,Vs2005,vc2008都不能編譯通過,報連接錯誤,或者報模板函數是一個普通非模板類,或者非模板函數。

            于是翻開C++  Primer,在16.4節有詳細的說明,
            1.對于一個特化的類,聲明一個友元模板必須對友元模板授予類的一個實例。
            2.對特定實例化的友元關系時,必須在可以用于友元聲明之前聲明類或函數。

            所以下面是修改后的代碼

             1template<class Type , int dim>
             2class DTest;
             3template<class Type , int dim>
             4ostream & operator << (ostream &out ,const DTest<Type,dim> &sess);
             5
             6
             7#pragma region 類DTest信息
             8template<class Type , int dim>
             9class DTest
            10{
            11public:
            12        // 構造函數
            13    DTest()
            14    {
            15        memset(_cords,0,sizeof(_cords));
            16    }

            17    DTest(Type cord[dim])
            18    {
            19        memcpy(_cords,cord,sizeof(cord));
            20    }

            21
            22        // 特化時,<Type,dim> 省略為<>
            23    friend ostream & operator << <>(ostream & out , const DTest<Type,dim> & data);
            24
            25private:
            26  Type _cords[dim];
            27}
            ;
            28
            29// 友元模板的實現
            30template<class Type, int dim>
            31ostream & operator << (ostream & out , const DTest<Type,dim> & data)
            32{
            33    for(int i = 0 ; i < dim-1 ; i++)
            34        out << data._cords[i] <<" ";
            35
            36    out <<endl;
            37    return out;
            38}

            39#pragma endregion

             



            B. 常見的幾種內存泄漏
              1.分配空間未釋放
              2.嵌套對象指針未釋放,
                   比如,一個類中包含另一個類的指針,在初始化的時候分配空間,缺沒有在析構函數釋放他。
              3.釋放一個對象數組的時候沒有使用[] ,
                   delete m_pObj; 只是釋放第一個&m_pObj[0] 對象,應該使用delete [] m_pObj;
              4.出現淺拷貝現象
              5.返回一個動態分配的對象,其實可以看【effective c++】 的條款23: 必須返回一個對象時不要試圖返回一個引用
                

            先總結這些,以后慢慢記錄我的學習筆記。


                 

             

            posted on 2009-04-22 22:21 expter 閱讀(769) 評論(0)  編輯 收藏 引用 所屬分類: 其他學習筆記工作筆記算法與數據結構

            九九久久自然熟的香蕉图片| 久久96国产精品久久久| 久久精品国产72国产精福利| 国内精品久久久久影院网站| 美女久久久久久| 亚洲伊人久久综合影院| 亚洲国产精品成人久久| 精品亚洲综合久久中文字幕| 久久人搡人人玩人妻精品首页| 久久香综合精品久久伊人| 久久久无码精品亚洲日韩蜜臀浪潮 | 久久久久久国产精品免费免费| 久久久精品人妻一区二区三区蜜桃 | 国产精品福利一区二区久久| 2020最新久久久视精品爱| 国产精品久久久久久久app| 91精品国产高清久久久久久io| 天天做夜夜做久久做狠狠| 国产欧美久久一区二区| 亚洲人成伊人成综合网久久久| 精品无码久久久久久久动漫| 欧美va久久久噜噜噜久久| 亚洲欧美精品一区久久中文字幕| 久久无码人妻一区二区三区| 久久久91人妻无码精品蜜桃HD| .精品久久久麻豆国产精品| 国内精品综合久久久40p| 无码任你躁久久久久久| 久久久久99精品成人片三人毛片| 久久精品国产亚洲一区二区| 精品久久人人爽天天玩人人妻| 亚洲国产成人精品女人久久久 | 中文字幕无码av激情不卡久久| 青青青青久久精品国产| 99麻豆久久久国产精品免费| 男女久久久国产一区二区三区| 怡红院日本一道日本久久| 国产亚洲婷婷香蕉久久精品 | 久久夜色精品国产| 久久天天躁狠狠躁夜夜2020老熟妇| 99国内精品久久久久久久|