是否可以通过引用从 dynamic_pointer_cast
获取返回值,还是会导致问题?
struct A
{
};
struct B : public A
{
};
int main()
{
shared_ptr<A> b = make_shared<B>();
auto &a = dynamic_pointer_cast<A>(b);
//auto a = dynamic_pointer_cast<A>(b);
return 0;
}
最佳答案
即使它是可能的,它也不会做你想做的事:
[The aim is that] the reference counter is not increased
它仍会增加,因为 dynamic_pointer_cast
无论如何都会返回一个新 shared_ptr
拷贝。
您的代码不起作用,因为引用将绑定(bind)到 dyanamic_pointer_cast
返回的临时对象,这是被禁止的。
使用 const
引用会起作用(因为 const&
被允许绑定(bind)到一个临时对象)但结果仍然是相同的:转换会创建一个 新建 shared_ptr
实例,并增加引用计数。
关于c++ - 使用 dynamic_pointer_cast 通过引用获取 shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10716794/