求大哥哥哥 2023-03-08 15:21 采纳率: 63.6%
浏览 27
已结题

为什么报错!如何编译呢

img


img

img

这是我的代码:
#include
using namespace std;
class Person
{
private:
char name[20];
char sex;
int age;
char* addr;
public:
Person()
{
strcpy_s(name, "张三");
sex = 'x';
age = 0;
addr = nullptr;
}
Person(const char* n, int age, char sex, char* addr)
{
strcpy_s(name, n);
this->age = age;
this->sex = sex;
this->addr = addr;
}
Person(Person& p)
{
strcpy_s(name, p.name);
sex = p.sex;
age = p.age;
addr = new char;
addr = p.addr;

}

~Person()
{
delete addr;
addr = nullptr;
cout << "调用析构函数\n";
}
void ShowMe();
};
void Person::ShowMe()
{
cout << "姓名为:" << name << ",年龄为:" << age << ",性别为:" << sex << ",地址为:" << addr << endl;
}
int main()
{
Person person1;
person1.ShowMe();
Person person2("小丽", 19, 'm', "中国广东省深圳市");
person2.ShowMe();
}



```c++




  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-03-08 15:28
    关注

    不行你就显式强制转换一下吧 (const char *)("小丽")
    拷贝构造函数中的addr = new char; addr = p.addr也是错的,new的空间会泄漏。析构函数和有参构造函数也不对应啊,有参构造函数中addr并没有new,析构时delete会崩溃掉的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月16日
  • 已采纳回答 3月8日
  • 修改了问题 3月8日
  • 创建了问题 3月8日

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看