static_cast父类到子类C ++

时间:2016-04-15 17:08:02

标签: c++ inheritance casting static-cast

该程序的输出是"方法B"。父对象的实例如何通过static_cast调用子类的函数?

为了让事情更加混乱,如果我将method()设为虚拟,那么此代码将输出"方法A"。

有谁可以解释这里发生的事情?

class A {
public:

    void method() {
        cout << "Method A" << endl;
    }

};

class B : public A {
public:
    void method() {
        cout << "Method B" << endl;
    }
};

int main() {
    A a;
    B* bptr = static_cast<B*>(&a);
    bptr->method();
}

0 个答案:

没有答案