關於部落格
職場生活筆記....熱情依然在
  • 49836

    累積人氣

  • 8

    今日人氣

    0

    訂閱人氣

虛擬繼承

最近接 Camera的案子,在Android HAL看到使用大量的Virtual Inheritance, 在這裡就說明一下使用方式 使用時機: 在使用多重繼承時,如果當兩個類別都繼承同一個父類別,而這兩個類別又同時被另一個類別以平行多重繼承的方式同時繼承。
如上圖,Class B將會擁有兩個Base Class類別的複本,一個來自A1所繼承下來的,一個來自A2所繼承下來的,那麼ClassB到底要用A1所繼承下來的?還是A2所繼承下來的?此時,藉由虛擬繼承,則可以解決此問題 虛擬繼承是在繼承基底類別時使用"virtual"關鍵字,例如: class Base { // 實作 }; class A1 : virtual public Base { // 虛擬繼承 // 實作 }; class A2 : virtual public Base { // 虛擬繼承 // 實作 }; class B : public A1 , public A2 { // 實作 }; 在上例中,A1 與A2 以虛擬繼承的方式繼承了Class Base,這個好處是當有類別多重繼承了某個基底類別時,在該類別中將會只有一個基底類別存在,而不會有多個複本,例如在上例中,Class B中將只會有一個基底類別Base的存在。
相簿設定
標籤設定
相簿狀態