为什么a/d/e和b并没有继承关系,转化后依然可以输出子类的内容? 这是因为静态绑定。 个人理解,大神们轻拍。 v.push_back(new d); v.push_back(new a); v.push_back(new x); v.push_back(new b); v.push_back(new e); v里面的5个指针,在编译的时候都已经知道所指对象的虚函数表中的函数实现(静态绑定)。 后续虽然有指针的类型转换,但是指针所指向的对象没有变,就不存在动态绑定。 vptr是保存在对象的内存空间中的,这点很重要。
点赞 7

相关推荐

牛客网
牛客企业服务