求大哥哥哥 2023-03-08 19:53 采纳率: 63.6%
浏览 28
已结题

关于类的一个问题,小丽报错,用了const也不行

这是修改后的代码


#include<iostream>
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 = new char;
  addr[0] = '\0';   //试试能不能删
 }
 Person(char* n, int age, char sex, char* addr)
 {
  strcpy_s(this->name, strlen(n + 1), n);
  this->age = age;
  this->sex = sex;
  this->addr = new char[strlen(n) + 1];
  addr = addr;
 }
 Person(Person &p)
 {
  strcpy_s(this->name, strlen(name + 1),p.name );
  this->age = p.age;
  this->sex = p.sex;
  addr = new char[strlen(addr) + 1]; //不知是不是this->
  addr = addr;
 }
 ~Person()
 {
  delete[] addr;
 }
 void ShowMe();
};
void Person::ShowMe()
{
 cout << "姓名为:" << name << ",年龄为:" << age << ",性别为:" << sex << ",地址为:" << *addr << endl;
}
int main()
{
 Person person1;
 person1.ShowMe();
 Person person2("小丽",19,'m',"中国广东省深圳市"); 
 person2.ShowMe();
}
  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2023-03-08 19:58
    关注

    强制转换试了没有啊,你别把自己憋死啊

     
    #include<iostream>
    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 = new char[20];
      addr[0] = '\0';   //试试能不能删
     }
     Person(char* n, int age, char sex, char* addr)
     {
      strcpy_s(this->name, strlen(n)+1 , n);
      this->age = age;
      this->sex = sex;
      this->addr = new char[strlen(addr) + 1];
      strcpy_s(this->addr,strlen(addr)+1,addr);
     }
     Person(Person &p)
     {
      strcpy_s(this->name, strlen(name + 1),p.name );
      this->age = p.age;
      this->sex = p.sex;
      addr = new char[strlen(p.addr) + 1]; 
      strcpy_s(this->addr ,strlen(p.addr)+1,p.addr);
     }
     ~Person()
     {
      delete[] addr;
     }
     void ShowMe();
    };
    void Person::ShowMe()
    {
     cout << "姓名为:" << name << ",年龄为:" << age << ",性别为:" << sex << ",地址为:" << addr << endl;
    }
    int main()
    {
     Person person1;
     person1.ShowMe();
     Person person2((char*)"小丽",19,'m',(char*)"中国广东省深圳市"); 
     person2.ShowMe();
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入