为什么static_cast不会转换为已初始化的类

时间:2016-02-18 15:35:27

标签: c++ casting static-cast

我想使用static_cast将数据强制转换为类实例。奇怪的是,它始终是基类而不是初始化的子类。以下是示例代码:

#include <iostream>
using namespace std;

class A
{
public:
    void Display () {
        fprintf(stderr, "I am A\n");
    }
};

class B : public  A
{
public:
    void Display () {
        fprintf(stderr, "I am B\n");
    }
};

int main()
{
    B *b=new B();
    b->Display(); //Invokes subclass function
    A *a=static_cast<A*>(b);
    a->Display(); //Invokes baseclass function
}

当前输出:

I am B
I am A

预期产出:

I am B
I am B

0 个答案:

没有答案