您的位置:首页 > 其它

普通指针转换智能指针转换时的错误

2016-04-27 08:23 204 查看
一。

一个普通指针转换为共享指针时只能转换一次。

A * a=new A();

A sharedPtr b=a;//正确

A sharedPtr c=a;//错误a已经转换了一次,如果在转换一次,相当于同一个普通指针生成了2个共享指针,其中一个销毁时会删除普通指针对象,另一个

// 也要删除时就出错。

使用时可以按这样

A sharedPtr b=A sharedPtr (new A);

b.......赋值

A sharedPtr c=A sharedPtr (new A);

c......赋值

二 当普通指针作为对象成员时,只能赋值给一个成员变量,否则会出现,一个对象删除时,将指针删除,其他

保存此指针的对象在删除时,无法删除一个已经删除的指针,而智能指针就可以多次赋值

A sharedPtr a=A sharedPtr (new A);

A sharedPtr b=A sharedPtr (new A);;

B c = new B();

a.set(c);//正确

c.set(b);//错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: