物件切片:繼承中遺失資料
在物件導向程式設計中,繼承允許類別擴充其父類別的功能。然而,這種繼承機制會引入一種稱為物件切片的現象,這可能會導致資料遺失。
什麼是物件切片?
物件切片發生在物件衍生類別的實例被指派給基底類別的實例。在此分配期間,派生類別的一部分資料變得不可存取並被「切片」掉。
物件切片何時發生?
考慮以下兩個類別:
class A { int foo; }; class B : public A { int bar; };
B 類別的實例包含兩個資料成員: foo (繼承自A) 和酒吧。但是,如果將 B 類型的物件指派給 A 類型的實例,如下所示:
B b; A a = b;
b 物件中的資料成員 bar 在 a 物件中變得不可訪問,從而導致物件切片。發生這種情況是因為 a 被視為基底類別實例,並且它不知道在衍生類別 B 中定義的 bar 成員。
以上是什麼是物件切片以及它何時在繼承中發生?的詳細內容。更多資訊請關注PHP中文網其他相關文章!