帶有指針型數(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;//
};
{
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;
}
{
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;
}
{
if (indexes!=NULL)
{
cout<<"指針成員變量已經(jīng)被分配了堆內(nèi)存,需要以delete模式釋放"<<endl;
delete[] indexes;
cout<<"釋放完畢"<<endl;
}
else
{
cout<<"指針成員變量為被分配堆內(nèi)存,不需要以delete模式釋放"<<endl;
}
cout<<"destructor"<<endl;
}
上一篇:C#代碼反編譯 得到項目可運行源碼 經(jīng)驗分享 下一篇:
[收藏此文章]