普通指针转换智能指针转换时的错误
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);//错误
一个普通指针转换为共享指针时只能转换一次。
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);//错误
相关文章推荐
- bzoj 3339: Rmq Problem(线段树)
- linux系统编程概述-系统调用
- cojs 疯狂的粉刷匠 疯狂的斐波那契 题解报告
- Activiti-Explorer 用户名与密码
- Activiti-Explorer 用户名与密码
- gdb 使用介绍
- Linux下使用GCC命令编译代码(1)
- [BZOJ3339]Rmq Problem(离线+线段树)
- 第k大元素
- php在原生代码中如何简单快速的发送email
- Eclipse 安装Groovy插件
- 记录一下游戏的上线
- 人生小结
- Win10一周年更新PC预览版14332修复内容汇总
- Delphi 10.1 Berlin 官方未列之修正
- dtoc
- oc开发笔记3 录音时频率获取 以及声像显示
- Android 开发值得订阅的日报和周刊
- HDU--2043
- 第一次冲刺个人博客09