静电铸造为什么要参考?

时间:2017-07-27 13:36:44

标签: c++ static-cast

请考虑以下代码:

struct base {};
struct derived : public base {};

int main() {
    derived d = {};
    derived* ptr_d = &d;
    derived*& ref_ptr_d = ptr_d;

    base*& ref_ptr_b = static_cast<base*&>(ref_ptr_d); // this won't compile
    (void) ref_ptr_b;
    return 0;
}

为什么ref_ptr_d被解释为derived*而不是derived*&并且演员表无效?

我可以在 MSVC gcc 编译器上重现它。

0 个答案:

没有答案
相关问题