简单问题,谁帮我看看为什么会抛出异常。(在线等待)

AllanJD 2003-12-17 12:09:25
请帮我看看这个异常的原因,谢谢
#include <iostream.h>
#include <string.h>
#include <conio.h>

class Person
{
private:
char * name;
int * age;

public:
Person(char * s,int * i);
~Person();
void display();
};
///////////////////////////////////////
Person::Person(char * s,int * i)
{
name=new char[strlen(s)+1];
strcpy(name,s);
age=new int;
age=i;
}

Person::~Person()
{
delete[] name;
delete age;
}

void Person::display()
{
cout<<"My name is "<<name<<endl;
cout<<"I am "<<*this->age<<" years old."<<endl;
}
///////////////////////////////////////
void main()
{
int myage;
myage=21;
Person my("Allan",&myage);
my.display();
}
...全文
87 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
maomaowhh 2003-12-17
  • 打赏
  • 举报
回复
在构造函数里copy变量*i, 不要取它的指针,
如果取它的指针,释放age时,由于存储区域不同,会有错误。
dddd8888 2003-12-17
  • 打赏
  • 举报
回复
你年龄为什么用指针
要么 *age = *i;
要么
Person(char * s,int * i);
改成
Person(char * s,int i);
LinuxPanther 2003-12-17
  • 打赏
  • 举报
回复
就是的。你在你的构造函数中,用new分配了一个动态内存,可是你没有用。
hxynxxx 2003-12-17
  • 打赏
  • 举报
回复
age=i;不對,應該用 *age = *i;
zhukeke 2003-12-17
  • 打赏
  • 举报
回复
问题出在你的构造函数上:
age=i; //错

改为:
*age=*i;
AllanJD 2003-12-17
  • 打赏
  • 举报
回复
请帮我看一下吧!我急啊!
AllanJD 2003-12-17
  • 打赏
  • 举报
回复
没见过哪个楼主有我这么累的这么菜的,要自己不断的顶。5555555555
AllanJD 2003-12-17
  • 打赏
  • 举报
回复
我是想实验一下为整形变量开辟空间的用法啊!
这个和给字符串空间的开辟和使用好像更加难以理解。
halfdream 2003-12-17
  • 打赏
  • 举报
回复
就是,很奇怪,楼主为什么不用
int age
codingcoding 2003-12-17
  • 打赏
  • 举报
回复
为什么要 int * age;
int age. 不行吗?
AllanJD 2003-12-17
  • 打赏
  • 举报
回复
*age=*i 就是把数据拷贝到了新开辟的存储空间中了吗?
AllanJD 2003-12-17
  • 打赏
  • 举报
回复
谁能告诉我 *age=*i 和 age=i 到底具体是什么样的区别?
AllanJD 2003-12-17
  • 打赏
  • 举报
回复
to maomaowhh()
存储的区域不同,所以会出现错误,能不能说的具体一点啊?

redhat_xu 2003-12-17
  • 打赏
  • 举报
回复
现综全如下:
#include <iostream.h>
#include <string.h>
#include <conio.h>

class Person
{
private:
char * name;
int * age;
public:
Person(char * s,int i);
~Person();
void display();
};
///////////////////////////////////////
Person::Person(char * s,int &i)
{
name=new char[strlen(s)+1];
strcpy(name,s);
age=new int; //没有用处,故省去
age=*i;
}
Person::~Person()
{
delete[] name;
delete age;
}
void Person::display()
{
cout<<"My name is "<<name<<endl;
cout<<"I am "<<*this->age<<" years old."<<endl;
}
///////////////////////////////////////
void main()
{
int myage;
myage=21;
Person my("Allan",&myage);
my.display();
}
WPS Office 2019 是一款功能丰富的办公软件套装,它整合了文字、表格、演示、PDF 等组件,具备体积小巧、功能丰富、兼容性强等特点,能满足日常办公的多种需求。 功能组件丰富:包含 WPS 文字、WPS 演示、WPS 表格、WPS PDF 等组件,可用于文档编辑、表格计算、幻灯片制作、PDF 处理等,支持 DOC、DOCX、XLS、XLSX、PPT 等多种格式,能与 Microsoft Office 较好地兼容。 支持云存储与协作:用户登录 WPS 账号后,可实现多终端、跨平台的数据同步,还能与他人协同办公,文档可通过微信、QQ 等社交平台一键分享。 PDF 功能强大:提供沉浸式 PDF 阅读体验和稳定的编辑服务,支持一键编辑 PDF 文档内容。借助 OCR 技术,可精准转换文档、表格、PPT、图片等格式的文件。 界面设计优化:具有全新视觉设计,默认皮肤舒适清爽,还支持桌面背景、界面字体、皮肤、格式图标等个性化设置。同时,文档标签可拖拽成独立窗口或合并,用户可自主选择文档显示方式,还能将文件放置在不同工作区,便于分类浏览与管理。 内置实用工具:内置了简单的网页浏览器,点击文档中的链接默认用其打开,可进行网页添加到首页、另存为 PDF 等操作。此外,“应用中心” 集成了输出转换、文档助手、安全备份等多种实用功能。 模板资源丰富:稻壳商城提供了大量模板、范文、图片等素材资源,涵盖求职简历、总结计划、合同协议等常见文档类型,方便用户快速创建专业文档。 表格功能特色突出:支持通过关键词快速切换工作表,设有阅读模式和护眼模式。还可分类合并单元格,以及拆分合并单元格并填充内容。公式编辑器中可轻松完成公式嵌套,筛选时可通过 “仅筛选此项” 一步完成特定值筛选,还能根据筛选条件生成动态分析图表。另外,“特色功能” 和 “智能工具箱” 菜单中包含 PDF

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧