什麼是虛擬基類,它有什麼作用

發布 健康 2024-02-27
6個回答
  1. 匿名使用者2024-02-06

    用於類的繼承。

    class derive : virtual public base{};虛擬基類主要解決基類在存在多次繼承時可能被多次繼承的問題,虛擬基類主要為派生類提供乙個基類,如:類 b{}; class d1 :

    public b{};class d2 : public b{};class c: public d1, public d2{};這裡的 c 繼承了 d1、d2,但有兩個基類,造成了混淆。

    因此,使用虛擬基類,即類 b{}; class d1 : virtual public b{};class d2 :

    virtual public b{};class c: public d1, public d2{};通俗易懂的MFC中的比喻很好,至少蘋果是這樣理解的。

  2. 匿名使用者2024-02-05

    虛擬基類主要為派生類提供基類。

    虛擬基類是共享的,也就是說,無論在繼承系統中繼承多少次,在物件記憶體模型中都會只有乙個虛擬基類的子類(這與多重繼承完全不同),所以既然是共享的,那麼每個子類就不會是排他性的,而是必須始終有乙個類來完成基類的初始化過程(因為所有物件都必須是initialized,即使它是預設的),並且不能重複初始化。

  3. 匿名使用者2024-02-04

    在多個繼承路徑上有乙個公共基類,在幾個路徑的匯合處,這個公共基類將產生多個例項(或多個副本),如果只想儲存這個基類的乙個例項,你可以將這個公共基類描述為乙個虛擬基類。

    虛擬繼承是物件導向程式設計中的一種技術,它指的是乙個指定的基類,在繼承體系結構中,該基類與其他類共享其成員資料的例項,這些類也直接或間接派生自該基型別。

    虛擬繼承是多重繼承所特有的概念。 虛擬基類的出現是為了解決多個繼承問題。

  4. 匿名使用者2024-02-03

    虛函式用於修改 virtual in multimorphism 中的父類函式,以保證父類函式在父類指標呼叫子類物件時執行。 休。 虛擬基類用於多重繼承,如果父類繼承自同乙個父類,則只例項化乙個父類(有點曲折,即只例項化乙個祖父類。

    設定虛擬基類的目的是提高程式的效率。 當多個繼承路徑上有乙個公共基類時,在幾個路徑的交匯處,公共基類將產生多個覆蓋例項,如果只想儲存這個基類的乙個例項,可以將這個公共基類描述為乙個虛擬基類。

    計算面積。 虛擬基類是在派生類中生成的,並且先於派生類本身。 當存在派生類 1、派生類 2 和生成的派生類 12 時,派生類 12 僅執行一次虛擬基類的構造。

    虛擬基類中只有乙個物件。 至於它有什麼特殊用途,我沒想到。

    沒錯。 最主要的是要避免在繼承鑽石時,孫子類中有祖父類的2份。 具體來說,看看百科全書的“虛擬基類”。

    通過純虛函式,可以表示虛函式僅提供可被子型別覆蓋的介面。 純虛函式是在基類中宣告的虛函式,它可以在基類中定義,派生類必須定義自己的實現。

  5. 匿名使用者2024-02-02

    設定虛擬基類的目的是提高程式的效率。

    當多個繼承路徑上有乙個公共基類時,在幾個這些路徑的匯合處,公共基類將產生多個例項,如果只想儲存基類的乙個例項,則可以將公共基類描述為虛擬基類。

    繼承中出現歧義的原因可能是繼承類多次繼承基類,如概述圖所示,子類 c 最終分別接受來自 A 和 B 的相同副本或副本,從而產生多個副本,即通過多次通過多個路徑繼承類,在記憶體中建立基類成員的多個副本。

    這些是 A 和 B 從父類繼承的,那麼 C 類應該繼承給 A 還是 B 還是同時接受兩者? 這會產生歧義,虛擬基類的基本原則是記憶體中只有基類成員的乙個副本。 這樣,通過將基類繼承宣告為虛擬,只能繼承基類的乙個副本,從而消除了歧義。

    對虛擬類的建構函式的呼叫列在直接或間接派生自虛擬基類的派生類中建構函式的成員初始化列表中。 但是,虛擬基類的建構函式僅使用從中建立物件的最遠派生類的構造函式呼叫,並且在執行時將忽略對該派生類的所有基類中列出的虛擬基類建構函式的呼叫。

  6. 匿名使用者2024-02-01

    C 指出,普通方法過載意味著類中的兩個或多個方法(包括隱藏的、繼承的方法)具有相同的名稱,並且編譯器知道在哪種情況下應該呼叫哪個方法,只要使用的引數的型別或數量不同。

    但是,在派生類中重新定義此虛函式時,方法名稱、返回值型別、參數列中的引數數、型別和順序必須與基類中的虛函式完全相同。

    簡單來說,子類中的override方法可以覆蓋累積中的虛擬方法,當你將乙個子類的例項轉換為基類時,該方法仍然由子類的override方法呼叫。

    乙個類中兩個同名的函式稱為“重寫”,基類和繼承類中同名的函式稱為“重寫”,必須使用虛函式進行重寫。

    只有基類的方法在新增關鍵字virtual後才能被派生類覆蓋,從而實現物件導向最重要的特徵——多型性,即基類可以使用派生類的方法。

    父類中方法過載,提供某行為的不同篦現方法(傳入不同的引數);

    子類中父對應方法的重灌可以這樣理解(但實際編譯過程不是這樣的):子類完全複製父程式碼後,挖出部分重寫程式碼,並補充子類的新程式碼。 如果子類沒有重灌(不使用override關鍵字),並且有與父類完全相同的方法,則可以理解為子類不會挖掘程式碼,它只是簡單地覆蓋它,當你想使用繼承的程式碼時,你只需要轉換型別來浮動被推翻的程式碼即可。

相關回答
15個回答2024-02-27

靜態---靜態。

下面是乙個示例。 class t >>>More

7個回答2024-02-27

混合稀有寶石材料被稱為“混合寶石”材料,它由多種稀有的複雜晶體和礦物組成。 >>>More

6個回答2024-02-27

樓上。 很清楚!

我不需要再解釋它了! >>>More

11個回答2024-02-27

茯苓,俗稱雲玲、松椰、茯苓,是一種寄生在松樹根部的真菌植物,形狀像紅薯,皮黑褐色,裡面有白色或粉紅色。 茯苓含有茯苓多醣、葡萄糖、蛋白質、氨基酸、有機酸、脂肪、卵磷脂、腺嘌呤、膽鹼、麥角甾醇、多種酶和鉀鹽。 >>>More

10個回答2024-02-27

建築回報是在建築工程的施工過程中確定其位置及其組成部分的過程。 >>>More