繁体   English   中英

常量正确性和shared_ptr转换

[英]Const correctness and shared_ptr conversions

假设我有以下几种类型:

using pointer = std::shared_ptr<MyType>;
using pointer_to_const = std::shared_ptr<const MyType>;

现在,如果我有如下代码:

void fun(pointer_to_const ptr);

pointer myObj = SomeFactoryMethod();
fun(myObj);

pointerpointer_to_const之间有自动转换吗? 如果有的话,是否可以在此转换期间复制基础MyType对象?

因为如果存在转换且没有副本,那么在多线程上下文中,另一个线程可以使用原始的myObj指针来修改基础对象,从而违反了fun期望的const

是的,这样的转换可以完成,并且将是指针和控制块的浅表副本(引用计数)。

是的,这将起作用。 以下shared_ptr构造函数将被调用:

template< class Y > 
shared_ptr( const shared_ptr<Y>& r );

Y推导为const MyType

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM