我是个初学者,问一个关于动态内存分配的问题
#include<iostream>
#include<string>
using namespace std;
class CClass
{
private:
char *name;
int num;
public:
CClass(char *Name="",int Num=0);
CClass(CClass &n);
~CClass()
{
cout<<"调用析构函数"<<endl;
delete name;
}
void Print();
};
CClass::CClass(char *Name,int Num)
{
name=Name;
num=Num;
}
CClass::CClass(CClass &n)
{
name=new char[strlen(n.name)+1];
if(name!=0)
{
strcpy(name,n.name);
}
num=n.num;
cout<<"创建班级拷贝"<<endl;
}
void CClass::Print()
{
cout<<"This name is:"<<name<<endl
<<"Num="<<num<<endl;
}
int main()
{
CClass c1("jiang",78);
CClass c2(c1);
c1.Print();
c2.Print();
return 0;
}
这个程序编译、链接都没问题,但运行时会弹出一个debug对话窗,不知道那个地方错了,还请各位前辈帮帮忙,请解释详细点,多谢了!!!
[解决办法]
CClass::CClass(char *Name,int Num){ name=new char[strlen(Name)+1]; strcpy(name,Name); num=Num;}