怎么动态分配内存来正确得到姓名

姓名一开始只能输出单个字符,改成深拷贝后输出乱码,不知道哪里出了问题

img

img

img

img

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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632