C++ 中的对象切片


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

class Foo {
   int a;
};
class Bar : public Foo {
   int b;
}

由于 Bar 扩展了 Foo,现在它有两个成员变量 a 和 b。因此,如果您创建一个类型为 Bar 的变量 bar,然后创建一个类型为 Foo 的变量并分配 bar,那么您将在过程中丢失成员变量 b。例如,

Bar bar;
Foo foo = bar;

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

更新于: 2019 年 7 月 30 日

438 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告