为了账号安全,请及时绑定邮箱和手机立即绑定

我的程序在运行时出错,应该是内存使用上的问题,请问应该怎么修改?谢谢了!!

我的程序在运行时出错,应该是内存使用上的问题,请问应该怎么修改?谢谢了!!

#include<iostream>#include<string>using namespace std;class Student{private:int age;char *name;public:Student(int m,char *n);Student();~Student();void SetMember(int m,char *n);int GetAge();char *GetName();};Student::Student(int m,char *n){age=m;if(n){name=new char[strlen(n)+1];strcpy(name,n);}}Student::Student(){age=0;name="unnamed";}Student::~Student(){cout<<"Destructor called."<<endl;delete []name;}int Student::GetAge(){return age;}char *Student::GetName(){return name;}void Student::SetMember(int m,char *n){age=m;if(n){name=new char[strlen(n)+1];strcpy(name,n);}else name=0;}int main(){Student stu[3]={Student(13,"wang")};stu[2].SetMember(12,"zhang");cout<<stu[0].GetAge()<<","<<stu[0].GetName()<<endl;cout<<stu[1].GetAge()<<","<<stu[1].GetName()<<endl;cout<<stu[2].GetAge()<<","<<stu[2].GetName()<<endl;return 0;}题目要求是:定义一个学生类 Student ,设计私有数据成员:年龄 int age; 姓名 char *name; 公有成员函数: 构造函数 带参数的构造函数 Student ( int m,char *n ) ; 不带参数的构造函数 Student ( ) ; 析构函数 ~ Student ( ) ; 释放由 name 申请的动态空间 改变数据成员值函数 void SetMember ( int m,char *n ) ;获取数据成员函数 int Getage ( ) ; char *Getname ( ) ; 在 main ( ) 中定义一个有 3 个元素的对象数组并分别初始化,然后输出对象数组的信息, main 函数的部分内容如下: int main ( ) { Student stu[3]={Student(13,“wang”);……} // 第一个元素调用带能构造函数初始化 // 第二、三个元素由无参构造函数初始化,默认年龄为 0 ,姓名为unnamed; //stu[2]. SetMember ( 12,"zhang“ ) ; // 修改第三个元素的数据成员值 
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

加个头文件cstring试试,你用了strlen()函数

查看完整回答
反对 回复 2023-03-18
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信