static_cast 正在创建新的 child object 吗?

Is static_cast creating new child object?

这段代码运行正常,但它应该有一个 run-time 错误,因为我还没有实例化派生的 class object.

#include <iostream>
using namespace std;

class Person {
public:
    void walk() { cout << "person walking" << endl; }
};
class Employee :public Person {
public:
    void work() { cout << "employee working" << endl; }
};
void main() {
    Person* p = new Person();
    Employee* e = static_cast<Employee*>(p); 
    e->work();// this is working - but why? it should fail at runtime
}

如果 static_cast 仅转换指针,如何调用 child 成员函数?
child 在什么时候实例化?
static_cast 是否也在实例化 objects?

没有

不幸的是,您断言您的代码应该“在运行时崩溃”是错误的。您的代码表现出未定义的行为,这意味着它实际上可以做任何事情。在这种情况下,我希望它能工作,因为函数的地址在两个对象中是相同的,但实际上,它可能是出于任何原因。