什么是C ++或Java中的对象切片?
对象切片用于描述将派生类的对象分配给基类的实例时的情况。这会导致派生类对象的方法和成员变量丢失。这被称为信息被切掉。例如,
class Foo { int a; }; class Bar : public Foo { int b; };
由于Bar扩展了Foo,因此它现在具有2个成员变量a和b。因此,如果创建Bar类型的变量bar,然后创建Foo类型的变量并分配bar,则在此过程中将丢失成员变量b。例如,
Bar bar; Foo foo = bar;
在这种情况下,关于b的信息in会丢失在一个条中。这称为成员切片。