gpt4 book ai didi

c++ - 带有自定义删除的 static_pointer_cast

转载 作者:搜寻专家 更新时间:2023-10-31 01:52:49 29 4
gpt4 key购买 nike

<分区>

我有这个函数,可以将派生自 Object 的任何类添加到容器中。

template<class T> void registerObject(T& object) {
auto sp = std::shared_ptr<T>(&object, [](T*){});
std::shared_ptr<Object> op = std::static_pointer_cast<Object>(sp);
objects_.push_back(op);
}

static_pointer_cast 中发生了什么使自定义删除方法对新指针仍然有效?

我问是因为 lambda 的计算结果不是采用派生类型吗?但是,转换后的指针会将 Object* 传递给该 lambda?那么调用自定义删除时是否会发生一些“向上转换”?我认为这是不可能的,因为您不能保证基类型是派生类型?

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com