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 的資訊丟失了。這被稱為成員切片。
廣告