virtual

virtual

定義C++中虛函數的關鍵字
virtual是定義C++中虛函數的關鍵字,這種函數或方法可以被子類繼承和覆蓋,通常使用動态調度實現[1]。在面向對象程序設計領域,C++、ObjectPascal等語言中有虛函數(英語:virtualfunction)或虛方法(英語:virtualmethod)的概念。這一概念是面向對象程序設計中(運行時)多态的重要組成部分。簡言之,虛函數可以給出目标函數的定義,但該目标的具體指向在編譯期可能無法确定。虛函數在設計模式方面扮演重要角色。例如,《設計模式》一書中提到的23種設計模式中,僅5個對象創建模式就有4個用到了虛函數(抽象工廠、工廠方法、生成器、原型),隻有單例沒有用到。
    中文名: 外文名:virtual 适用領域: 所屬學科: 概念:以繼承為前提等 作用:調用該函數傳遞子類對象等 定義:C++中虛函數的關鍵字

英語翻譯

adj.實質上的,事實上的;(計算機)虛拟的;<物>有效的,虛像的;(粒子)實際存在的物。

目的

在面向對象程序設計中,派生類繼承自基類。使用指針或引用訪問派生類對象時,指針或引用本身所指向的類型可以是基類而不是派生類。如果派生類覆蓋了基類中的方法,通過上述指針或引用調用該方法時,可以有兩種結果:

    調用到基類的方法:編譯器根據指針或引用的類型決定,稱作“早綁定”。

2.調用到派生類的方法:語言的運行時系統根據對象的實際類型決定,稱作“遲綁定”。

虛函數的效果屬于後者。如果問題中基類的函數是“虛”的,則調用到的都是最終派生類(英語:most-derivedclass)中的函數實現,與指針或引用的類型無關。反之,如果函數非“虛”,調用到的函數就在編譯期根據指針或者引用所指向的類型決定。有了虛函數,程序甚至能夠調用編譯期還不存在的函數。

在C++中,在基類的成員函數聲明前加上關鍵字virtual即可讓該函數成為虛函數,派生類中對此函數的不同實現都會繼承這一修飾符,允許後續派生類覆蓋,達到遲綁定的效果。即便是基類中的成員函數調用虛函數,也會調用到派生類中的版本。

上一篇:Internet組管理協議

下一篇:EXEC

相關詞條

相關搜索

其它詞條