带有指针型数据成员的类新手初学C++心得
作者: 来源: 发布时间:2011-3-15 16:50:37 点击:
最近打算写一个算法类,算法类中要有一个指针型数据成员,然而该指针型数据成员却不能在构造函数只能够分配堆内存(因为此时我们还不确定数组的维度),只有调用了某个函数之后,方知道动态数组维度,考虑不在类的构造函数中调用确定数组维度的那个函数做如下设想:
在类的其他其他成员函数中为该指针成员分配堆内存,析构函数中释放该数据成员。问了几个同学和网友后做如下设计:
该类
class stringprocess
{
public:
stringprocess(void);
~stringprocess(void);
//int GetLongestCommonSequence(wstring x,wstring y,wstring result);
void test();
private:
int *indexes;//声明指向指针的指针,保存两个字符串中的最长公共序列中的字符分别出现的位置。
wstring xpart;//最大公共字序列的父串之一
wstring ypart;//
};
{
public:
stringprocess(void);
~stringprocess(void);
//int GetLongestCommonSequence(wstring x,wstring y,wstring result);
void test();
private:
int *indexes;//声明指向指针的指针,保存两个字符串中的最长公共序列中的字符分别出现的位置。
wstring xpart;//最大公共字序列的父串之一
wstring ypart;//
};
该类的构造函数
stringprocess::stringprocess(void)
{
indexes=NULL;
}
{
indexes=NULL;
}
该类的析构函数
:
stringprocess::~stringprocess(void)
{
if (indexes!=NULL)
{
cout<<"指针成员变量已经被分配了堆内存,需要以delete模式释放"<<endl;
delete[] indexes;
cout<<"释放完毕"<<endl;
}
else
{
cout<<"指针成员变量为被分配堆内存,不需要以delete模式释放"<<endl;
}
cout<<"destructor"<<endl;
}
{
if (indexes!=NULL)
{
cout<<"指针成员变量已经被分配了堆内存,需要以delete模式释放"<<endl;
delete[] indexes;
cout<<"释放完毕"<<endl;
}
else
{
cout<<"指针成员变量为被分配堆内存,不需要以delete模式释放"<<endl;
}
cout<<"destructor"<<endl;
}
上一篇:C#代码反编译 得到项目可运行源码 经验分享 下一篇:
[收藏此文章]