草庐IT

weak_ptr_cast

全部标签

c++ - 我应该通过引用传递 shared_ptr 吗?

这个问题在这里已经有了答案:Shouldwepassashared_ptrbyreferenceorbyvalue?(10个回答)关闭8年前。传递shared_ptr的最佳做法是什么?目前我像这样传递shared_ptr函数参数:voidfunction1(shared_ptr&value); 最佳答案 在受控情况下,您可以通过常量引用传递共享指针。确保没有人同时删除该对象,但如果您注意引用的对象,这应该不会太难。一般来说,您应该将共享指针作为直接拷贝传递。这赋予了它预期的语义:每个包含共享指针拷贝的作用域都凭借其在所有权中的“份额

c++ - `const shared_ptr<T>` 和 `shared_ptr<const T>` 之间的区别?

我正在为C++中的共享指针编写一个访问器方法,如下所示:classFoo{public:return_typegetBar()const{returnm_bar;}private:boost::shared_ptrm_bar;}所以为了支持getBar()的const-ness返回类型应该是boost::shared_ptr防止修改Bar它指向。我的猜测是shared_ptr是我想要返回的类型,而constshared_ptr将防止重新分配指针本身以指向不同的Bar但允许修改Bar它指向...但是,我不确定。如果确定知道的人可以确认这一点,或者如果我弄错了,我将不胜感激。谢谢!

c++ - `const shared_ptr<T>` 和 `shared_ptr<const T>` 之间的区别?

我正在为C++中的共享指针编写一个访问器方法,如下所示:classFoo{public:return_typegetBar()const{returnm_bar;}private:boost::shared_ptrm_bar;}所以为了支持getBar()的const-ness返回类型应该是boost::shared_ptr防止修改Bar它指向。我的猜测是shared_ptr是我想要返回的类型,而constshared_ptr将防止重新分配指针本身以指向不同的Bar但允许修改Bar它指向...但是,我不确定。如果确定知道的人可以确认这一点,或者如果我弄错了,我将不胜感激。谢谢!

c++ - C++ 中的 dynamic_cast 和 static_cast

我对C++中的dynamic_cast关键字感到很困惑。structA{virtualvoidf(){}};structB:publicA{};structC{};voidf(){Aa;Bb;A*ap=&b;B*b1=dynamic_cast(&a);//NULL,because'a'isnota'B'B*b2=dynamic_cast(ap);//'b'C*c=dynamic_cast(ap);//NULL.A&ar=dynamic_cast(*ap);//Ok.B&br=dynamic_cast(*ap);//Ok.C&cr=dynamic_cast(*ap);//std::bad

c++ - C++ 中的 dynamic_cast 和 static_cast

我对C++中的dynamic_cast关键字感到很困惑。structA{virtualvoidf(){}};structB:publicA{};structC{};voidf(){Aa;Bb;A*ap=&b;B*b1=dynamic_cast(&a);//NULL,because'a'isnota'B'B*b2=dynamic_cast(ap);//'b'C*c=dynamic_cast(ap);//NULL.A&ar=dynamic_cast(*ap);//Ok.B&br=dynamic_cast(*ap);//Ok.C&cr=dynamic_cast(*ap);//std::bad

objective-c - 委托(delegate)属性声明中的 'weak'和 'assign'有什么区别

这有什么区别:@property(nonatomic,weak)iddelegate;还有这个:@property(nonatomic,assign)iddelegate;我想为委托(delegate)使用属性。 最佳答案 weak之间的唯一区别和assign是如果对象是weak指向的属性被释放,则weak的值指针将设置为nil,这样您就永远不会冒访问垃圾的风险。如果您使用assign,这不会发生,所以如果对象从您下面被释放并且您尝试访问它,您将访问垃圾。对于Objective-C对象,如果您处于可以使用weak的环境中,那么你应该

objective-c - 委托(delegate)属性声明中的 'weak'和 'assign'有什么区别

这有什么区别:@property(nonatomic,weak)iddelegate;还有这个:@property(nonatomic,assign)iddelegate;我想为委托(delegate)使用属性。 最佳答案 weak之间的唯一区别和assign是如果对象是weak指向的属性被释放,则weak的值指针将设置为nil,这样您就永远不会冒访问垃圾的风险。如果您使用assign,这不会发生,所以如果对象从您下面被释放并且您尝试访问它,您将访问垃圾。对于Objective-C对象,如果您处于可以使用weak的环境中,那么你应该

ios - Objective-C ARC : strong vs retain and weak vs assign

ARC引入的属性有两个新的内存管理属性,strong和weak。除了copy,这显然是完全不同的东西,strongvsretain和有什么不同吗?弱vsassign?据我了解,这里唯一的区别是weak会将nil分配给指针,而assign不会,这意味着释放后,当我向指针发送消息时,程序将崩溃。但是如果我使用weak,这将永远不会发生,因为发送到nil的消息不会做任何事情。我不知道strong和retain之间有什么区别。我有什么理由应该在新项目中使用assign和retain,还是已经弃用了? 最佳答案 看了这么多Stackoverf

ios - Objective-C ARC : strong vs retain and weak vs assign

ARC引入的属性有两个新的内存管理属性,strong和weak。除了copy,这显然是完全不同的东西,strongvsretain和有什么不同吗?弱vsassign?据我了解,这里唯一的区别是weak会将nil分配给指针,而assign不会,这意味着释放后,当我向指针发送消息时,程序将崩溃。但是如果我使用weak,这将永远不会发生,因为发送到nil的消息不会做任何事情。我不知道strong和retain之间有什么区别。我有什么理由应该在新项目中使用assign和retain,还是已经弃用了? 最佳答案 看了这么多Stackoverf

c++ - shared_ptr 到数组 : should it be used?

只是一个关于shared_ptr的小查询.使用shared_ptr指向数组是一种好习惯吗?例如,shared_ptrsp(newint[10]);如果不是,那为什么不呢?我已经知道的一个原因是不能增加/减少shared_ptr。因此它不能像普通的指向数组的指针一样使用。 最佳答案 使用C++17,shared_ptr可用于管理动态分配的数组。shared_ptr在这种情况下,模板参数必须是T[N]或T[].所以你可以写shared_ptrsp(newint[10]);来自n4659,[util.smartptr.shared.con