将派生类对象分配给基类对象时会发生什么(我的意思是对象断言,而不是指针)
what happens when assign a derived class object to a base class object(I mean object assginment, not pointer)
我知道当将派生对象分配给基对象时,会发生切片。派生类对象的第一部分将复制到基对象。这是我的问题:
- vptr(虚拟表指针)会被复制到基类对象吗?
- 如果 vptr 没有复制到基类对象(我想,因为对象赋值不会导致多态性),为什么?有什么规则可以支持这一点吗?
不,没有复制任何 vtable 指针。 也不可能,因为目标对象在赋值之前和之后都是真正的基类类型。
在切片对象上调用的虚拟方法将调用基类实现。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 尝试删除指向派生对象的基指针时断言错误
- 断言"IsObject()"在通过 Boost ASIO 发送对象时失败
- 包含多态对象的向量:静态断言误差
- 你如何断言一个对象在c++中有一个特定的方法
- 创建对象时调试断言失败
- 将派生类对象分配给基类对象时会发生什么(我的意思是对象断言,而不是指针)
- 删除对象时调试断言失败
- 删除对象时C++断言错误
- 你能静态断言对象可以转换为某种类型吗?
- CImage对象的深度复制导致调试断言失败
- malloc.c:3097: sYSMALLOc:断言在动态创建的对象的构造函数中失败
- VS2012:单元测试错误:断言::AreEqual(对象,对象)不起作用
- 试图删除空对象的断言
- 调试断言失败!表达式:is_block_type_valid(标头>_block_use)。对象不会初始化和推送错误
- c++, google test/mock:测试和对象类型的断言
- 在从全局对象调用的静态库函数中使用std::vector时,调试断言失败
- 按值传递对象时出现断言错误--它是我的复制构造函数