在 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;

在这种情况下,a 中有关 b 的信息在 bar 中丢失。这被称为成员切片。

更新于: 2019 年 7 月 30 日

2 千多人次浏览

启动你的 职业

完成课程后获得认证

开始
广告