我最近一直在关注const-correctness,当我查看我的一些代码时,我注意到了
this
使用Visual Studio中的reinterpret_cast,可以将指针强制转换为非const指针(看似无效)。
如下所示。
const uint32_t & T::func() const
{
return *reinterpret_cast< const uint32_t * const>(this); // This compiles
}
const uint32_t & T::anotherfunc() const
{
return *reinterpret_cast< const uint32_t * >(this); // This also compiles
}
是否有正确的方法可以做到这一点还是两者都正确?
另外,我认为reinterpret_cast应该停止更改const关键字?
很抱歉,如果问题似乎无关紧要,那只是我的好奇心。