const。引入 virtual function 後,編譯器在建構子插入 vptr 初始化,copy ctor/operator= 也需處理 vptr,不再是單純位元複製。
虛繼承菱形結構:
class Point3d : virtual public Point { ... };
class Vertex : virtual public Point { ... };
class Vertex3d : public Point3d, public Vertex { ... };
Vertex3d 建構子傳遞 _most_derived=false 給基類建構子,抑制 Point3d/Vertex 對 Point 的重複建構,由最衍生類 Vertex3d 統一建構虛基類。
確保建構期間呼叫虛函數能正確解析。
虛基類會導致子物件重複複製,至今無完美解。建議:虛基類**不宣告資料**、禁止複製操作。
與建構順序完全相反。