【发布时间】:2026-02-04 10:50:01
【问题描述】:
class B{
private:
int a;
}
class D: public B{
private:
int b;
}
B* b = new B;
现在出于某种原因,我希望 将 b 变为 D* 类型的对象。
例如保留 B 的信息并成为 D 需要额外的信息。
我目前在想的是。 static_cast 进行向上转换。附加属性将设置为 null 或垃圾。然后手动分配附加属性。但这会导致悬空指针风险。如果对复制构造函数的编码不够谨慎。
那么还有什么合适的解决方案?
如果我们从 PHP 的角度来思考这个难题,还有什么解决方案吗?
【问题讨论】:
-
为什么要这样做?可能有比通过强制转换将非
D转换为D更好的解决方案。
标签: php c++ polymorphism casting