如何解决static_cast是否正在创建新的子对象?
由于我尚未实例化派生类对象,因此该代码在应出现运行时错误时运行良好。
#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仅转换指针,那么如何调用子成员函数?
在什么时候实例化孩子?
static_cast还在实例化对象吗?
解决方法
否。
不幸的是,您断言您的代码应“在运行时崩溃”是错误的。您的代码表现出未定义的行为,这意味着它可以执行任何操作。在这种情况下,我希望它能工作,因为函数的地址在两个对象中都是相同的,但实际上可能是出于任何原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。