軟件首頁 |  文章首頁
最新更新 軟件分類 設(shè)為首頁 加入收藏 聯(lián)系我們
當(dāng)前位置:首頁文章首頁 IT學(xué)院 IT技術(shù)

帶有指針型數(shù)據(jù)成員的類新手初學(xué)C++心得

作者:  來源:  發(fā)布時間:2011-3-15 16:50:37  點擊:

最近打算寫一個算法類,算法類中要有一個指針型數(shù)據(jù)成員,然而該指針型數(shù)據(jù)成員卻不能在構(gòu)造函數(shù)只能夠分配堆內(nèi)存(因為此時我們還不確定數(shù)組的維度),只有調(diào)用了某個函數(shù)之后,方知道動態(tài)數(shù)組維度,考慮不在類的構(gòu)造函數(shù)中調(diào)用確定數(shù)組維度的那個函數(shù)做如下設(shè)想:

在類的其他其他成員函數(shù)中為該指針成員分配堆內(nèi)存,析構(gòu)函數(shù)中釋放該數(shù)據(jù)成員。問了幾個同學(xué)和網(wǎng)友后做如下設(shè)計:

 

該類
class stringprocess
{
public:

    stringprocess(
void);
    
~stringprocess(void);
    
//int GetLongestCommonSequence(wstring x,wstring y,wstring result);
    void test();
private:
    
int *indexes;//聲明指向指針的指針,保存兩個字符串中的最長公共序列中的字符分別出現(xiàn)的位置。
    wstring xpart;//最大公共字序列的父串之一
    wstring ypart;//
    
 
};
該類的構(gòu)造函數(shù)
stringprocess::stringprocess(void)
{
    indexes
=NULL;
}

 

 

 

該類的析構(gòu)函數(shù)

stringprocess::~stringprocess(void)
{
    
if (indexes!=NULL)
    {
        cout
<<"指針成員變量已經(jīng)被分配了堆內(nèi)存,需要以delete模式釋放"<<endl;    
        delete[] indexes;
        cout
<<"釋放完畢"<<endl;
        
    }
    
else
    {
        cout
<<"指針成員變量為被分配堆內(nèi)存,不需要以delete模式釋放"<<endl;
    }
    
    cout
<<"destructor"<<endl;
}

文章評論

本類推薦文章

關(guān)于本站 | 網(wǎng)站幫助 | 廣告合作 | 下載聲明 | 友情連接 | 網(wǎng)站地圖
Copyright © 20098-2010 uzzf下載站. All Rights Reserved .