用Java / C#进行C ++切片

C++ slicing in Java / C#

本问题已经有最佳答案,请猛点这里访问。

C++切片是否也适用于其他语言,比如爪哇/C?


切片意味着如果将子类实例分配给一个超类变量,子类所包含的额外信息将被"切片"掉,因为超类变量没有额外的空间来存储子类的额外信息。

这不发生在Java中,也不在C语言中,因为所有的对象变量都是引用;当将子类实例赋值给超类变量时,实际上只复制引用;子类对象本身仍然完好无损。