• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    什么是虛擬繼承(Virtual Inheritance)?

    虛擬繼承是一種繼承類型,其中父類的實現是不完整的,并且需要子類才能完整地定義對象。這種類型的繼承可以與單繼承和多重繼承結合使用,但最常用于多重繼承。任何從虛擬基類成為該基類的直接子類。虛擬基類可能依賴于子類...
    虛擬繼承是一種繼承類型,其中父類的實現是不完整的,并且需要子類才能完整地定義對象。這種類型的繼承可以與單繼承和多重繼承結合使用,但最常用于多重繼承。任何從虛擬基類成為該基類的直接子類。虛擬基類可能依賴于子類來實現其所有方法,但這不是一個要求。C是最常用的使用虛擬繼承的計算機語言。C是最常用的使用虛擬繼承的計算機語言。要在C中聲明虛擬繼承,使用“virtual”關鍵字。父類和子類都必須用“virtual”關鍵字聲明虛方法這告訴C編譯器超類是不完整的,它必須從子類中獲取信息才能完成它。使用子類來完成超類并不意味著子類如果有相同的基類,它們會相互覆蓋,而是由C編譯器來決定每個對象的哪些部分虛擬繼承需要虛擬基類,C中的全局函數不能聲明為虛。只有在遵循面向對象編程(OOP)原則的情況下才能使用此繼承類型。原因是全局函數與特定的類沒有關聯,所以通常是獨立的,沒有超類和子類的繼承是不可能發生的,所以全局函數和虛繼承是互斥的,全局函數理論上可以在虛函數內部使用,但反過來可能并不總是有效的,虛擬繼承被用來解決許多編程問題,其中最有用的是解決歧義在多重繼承中,可以有一個基類a,它有兩個子類B和C,然后是一個從類B和C繼承的類D。這種模式通常被稱為“死亡鉆石”,因為如果類a、B和C都有相同方法的實現,類D不可能確定它應該使用哪個實現。虛擬繼承解決了這個問題,因為每個類的實現都是不同的,因此沒有歧義。這種區別是由名為虛擬表(vtables)的專用內部對象處理的,這些對象跟蹤每種對象類型,但這些表不需要由程序員顯式地操作,因為它們是內置于語言中的
    • 發表于 2020-08-06 15:03
    • 閱讀 ( 635 )
    • 分類:電腦網絡

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    admin
    admin

    0 篇文章

    作家榜 ?

    1. xiaonan123 189 文章
    2. 湯依妹兒 97 文章
    3. luogf229 46 文章
    4. jy02406749 45 文章
    5. 小凡 34 文章
    6. Daisy萌 32 文章
    7. 我的QQ3117863681 24 文章
    8. 華志健 23 文章

    推薦文章

    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆