永发信息网

智能指针,这段代码有什么问题

答案:1  悬赏:10  手机版
解决时间 2021-06-02 19:32

运行时总是弹出debug assertion failed

以下是代码


#include <iostream>

using namespace std;

class U_Ptr
{

friend class HasPtr;

int *ip;

size_t use;

U_Ptr(int *p): ip(p), use(1) {}

~U_Ptr() { delete ip; }
};


class HasPtr
{
public:

HasPtr(int *p, int i): ptr(new U_Ptr(p)), val(i) {}

HasPtr(const HasPtr &orig): ptr(orig.ptr), val(orig.val) {++ptr -> use;}


HasPtr& operator=(const HasPtr&);

~HasPtr() { if(--ptr -> use == 0) delete ptr;}


int get_ptr_val(){ return *ptr -> ip;}

void set_ptr_val(int i) { *ptr -> ip = i;}

private:

U_Ptr *ptr;

int val;
};

HasPtr& HasPtr::operator=(const HasPtr& rhs)
{
++rhs.ptr -> use;

if(--ptr -> use == 0)

delete ptr;

ptr = rhs.ptr;

val = rhs.val;

return *this;
}


int main()
{

int ix = 2;

HasPtr hspt(&ix, 3);

HasPtr hspt2(hspt);

cout << hspt.get_ptr_val() << endl;

hspt2.set_ptr_val(10);

cout << hspt2.get_ptr_val() << endl;

return 0;
}

最佳答案


我也不知到 !

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问下哪个好看?
普通温度计的基本结构是什么
开心网里的开心庄园可以偷别人的吗
《范进中举》中的范进是什么时期的人?
他那样对我,我为什么还要爱他呢???
寻mrp格式QQ2008 、 有的发邮箱
VB提取指定字段
日志评论显示不出来,是什么原因?
为什么会得皮肤划痕症、又如何预防、?
为什么我的IP一修复本地连接就能上几秒钟,然
如何在河北人才网上向公司投放简历?
baby by me里好像多次谈到lil mama,有什么寓
我充了年会员,图标为什么不在QQ上显示?
是世界太虚伪,还是人太虚伪
谁能告诉我世界上真的有外星人吗?为什么??
推荐资讯
头文字D里的秋鸣山在什么地方?
汶川地震、玉树地震、舟曲泥石流…灾难卟断变
时代宏雅北京办公家具公司在那里
电脑桌面上的导航每个都出现蓝屏是怎么回事?
大米和小米混合煮粥营养会损失吗?
山阳区焦作百大超市(山阳春天店)这个地址怎么
IE和任务管理器不能同时打开??、
大家帮我看看这是玩具狗吗?
关于罗德曼的的篮板
广元自驾车到浙江宁波的路程和费用是多少?
QQ旋风的积分要干嘛?
地下多少级点亮图标
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?