【发布时间】:2017-11-04 10:24:19
【问题描述】:
下面代码中的reinterpret_cast 是否会导致未定义的行为?如果是这样,是否可以以类型安全的方式定义rpd?
class Base
{
public:
virtual ~Base() = default;
};
class Derived : public Base { };
int main(void)
{
Derived d;
Base* pb = &d;
Base*& rpb = pb;
Derived*& rpd = reinterpret_cast<Derived*&>(rpb);
return 0;
}
与我之前的recent question 有点相关。这背后的背景;我正在试验一个适配器类,它应该允许包含协变指针类型的向量本身用作协变类型。
【问题讨论】:
标签: c++ pointers reinterpret-cast