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 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告