在 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 千多人次瀏覽

啟動你的 職業

完成課程後獲得認證

開始
廣告
© . All rights reserved.