首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请教关于String类的一个简单问题(新手提问) [已结贴,结贴人:canny1543]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • canny1543
    • 等级:
    发表于:2008-03-29 22: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;
    }
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • oo
    • 等级:
    发表于:2008-03-29 22:19:471楼 得分:20
    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 22:22:012楼 得分:0
    C/C++ code
    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; }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • canny1543
    • 等级:
    发表于:2008-03-29 22:33:143楼 得分:0
    非常感谢啊,我好像明白了,呵呵,刚学,很多地方不是很清楚,马上给你分哦!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-29 23:05:174楼 得分:0
    delete pstr; 
    delete pstr2;
    重复删除指针,很危险
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved