请大家帮我看一下这题!!!(拷贝构造函数)
ra3 2002-11-22 01:07:06 (VC6编译)
运行时结果也对,会出一个调试出错的对话框。
如果不释放分配的堆内存,则没事。
在拷贝构造函数中我已经给成员 pName 分配了堆内存了,应该不会再共用一段内存。即使先调用 deleteName(); 函数释放原有的堆内存也不行。
/////////////////////////////////////////////////////////////////////
#include <iostream.h>
#include <string.h>
class CName
{
public:
CName(){pName=NULL;}
CName(char *pn){copyName(pn);}
CName(CName& s){copyName(s.pName);} //拷贝构造函数
~CName(){deleteName();}
void display();
protected:
void copyName(char *pn);
void deleteName();
protected:
char *pName;
};
void CName::display()
{
cout<<pName<<endl;
}
void CName::copyName(char *pn)
{
pName=new char[strlen(pn)+1];
if(pName) strcpy(pName,pn);
}
void CName::deleteName()
{
if(pName)
{
delete[] pName;
pName=NULL;
}
}
void main()
{
CName s("claudette");
CName t("temporatry");
t.display();
t=s;
t.display();
}