普通指针转换智能指针转换时的错误
一。
一个普通指针转换为共享指针时只能转换一次。
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);//错误
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了