姓名一开始只能输出单个字符,改成深拷贝后输出乱码,不知道哪里出了问题
pName = new char(* name)这种写法不对。
需要用new char指定申请的内存空间大小,然后用strcpy_s来复制才行。
Person::Person(char* name, int a, float h, float w)
{
int len = strlen(name);
pName = new char[len + 1];
strcpy_s(pName,len+1, name);
age = a;
height = h;
weight = w;
}
//拷贝构造函数,深拷贝
Person::Person(const Person& vref)
{
int len = strlen(vref.pName);
pName = new char[len + 1];
strcpy_s(pName, len + 1, vref.pName);
age = vref.age;
height = vref.height;
weight = vref.weight;
}
Person::Person(char *name,int a,float h,float w)
{
int len = strlen(name);
pName = new char[len+1];
strcpy(pName,name);
age = a;
height = h;
weight = w;
}
Person::Person(const Person &vref)
{
int len = strlen(vref.name);
pName = new char[len+1];
strcpy(pName,vref.name);
age = vref.age;
height = vref.height;
weight = vref.weight;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!