该程序的输出是"方法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();
}