C ++中的对象切片

对象切片用于描述将派生类的对象分配给基类的实例时的情况。这会导致派生类对象的方法和成员变量丢失。这被称为信息被切掉。例如,

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中的信息会丢失在一条栏中。这称为成员切片。