请教关于String类的一个简单问题(新手提问)

mm1543 2008-03-29 10:05:30
我照着网上的写法写了个String类,然后写了main函数,但是到红色的代码行就出现了问题,请教一下,谢谢了
void main()
{
String *pstr=new String();//调用参数为空指针的构造函数
char * str={"abc"};
String *pstr2=new String(str);//调用参数为非空指针的构造函数
pstr=pstr2;//调用赋值函数(针对已存在的对象才能调用赋值函数)
String *pstr3=new String (*pstr2);//调用拷贝构造函数

delete pstr;
delete pstr2;//有问题
delete pstr3;
}
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyustc 2008-03-29
  • 打赏
  • 举报
回复
delete pstr;
delete pstr2;
重复删除指针,很危险
mm1543 2008-03-29
  • 打赏
  • 举报
回复
非常感谢啊,我好像明白了,呵呵,刚学,很多地方不是很清楚,马上给你分哦!
oo 2008-03-29
  • 打赏
  • 举报
回复
void main()  
{
String *pstr=new String();//调用参数为空指针的构造函数
char * str={"abc"};
String *pstr2=new String(str);//调用参数为非空指针的构造函数
pstr=pstr2;//这个是指针赋值,不是对象赋值,应该用 *pstr = *pstr2; 直接指针赋值的结果是pstr变成pstr2,都指向相同地址
String *pstr3=new String (*pstr2);//调用拷贝构造函数

delete pstr;
delete pstr2;//因为 pstr变成pstr2,都指向相同地址,这样对同一个对象析构两次,当然会有问题
delete pstr3;
}
oo 2008-03-29
  • 打赏
  • 举报
回复
void main()
{
String *pstr=new String();//调用参数为空指针的构造函数
char * str={"abc"};
String *pstr2=new String(str);//调用参数为非空指针的构造函数
pstr=pstr2;//这个是指针赋值,不是对象赋值,应该用 *pstr = *pstr2; 直接指针赋值的结果是pstr变成pstr2,都指向相同地址
String *pstr3=new String (*pstr2);//调用拷贝构造函数

delete pstr;
delete pstr2;//因为 pstr变成pstr2,都指向相同地址,这样对同一个对象析构两次,当然会有问题
delete pstr3;
}

64,649

社区成员

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

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