1樓:育知同創教育
虛擬函式就是在基類中被關鍵字virtual說明,並在派生類中重新定義的函式。虛擬函式的作用是允許在派生類中重新定義與基類同名的函式,並且可以通過基類指標或引用來訪問基類和派生類中的同名函式。
虛擬函式就是為了讓基類指標(或引用)能訪問派生類中定義的成員。
什麼是虛擬函式,c++虛擬函式講解
2樓:千鋒教育
在某基類中宣告為 virtual 並在一個或多個派生類中被重新定 義的成員函式,用法格式為:virtual 函式返回型別 函式名(參數列) ;實現多型性,通過指向派生類的基類指標或引用,訪問派生類中同名覆蓋成員函式。
虛擬函式定義:簡單地說,那些被virtual關鍵字修飾的成員函式,就是虛擬函式。虛擬函式的作用,用專業術語來解釋就是實現多型性(polymorphi**),多型性是將介面與實現進行分離;用形象的語言來解釋就是實現以共同的方法,但因個體差異,而採用不同的策略。
虛擬函式的作用:用同一個呼叫形式,既能呼叫派生類又能呼叫基類的同名函式。
虛擬函式的使用方法是:
在基類用virtual宣告成員函式為虛擬函式。這樣就可以在派生類中重新定義此函式,為它賦予新的功能,並能方便地被呼叫。在類外定義虛擬函式時,不必再加virtual。
在派生類中重新定義此函式,要求函式名、函式型別、函式引數個數和型別全部與基類的虛擬函式相同,並根據派生類的需要重新定義函式體。c++規定,當一個成員函式被宣告為虛擬函式後,其派生類中的同名函式都自動成為虛擬函式。因此在派生類重新宣告該虛擬函式時,可以加virtual,也可以不加,但習慣上一般在每一層宣告該函式時都加virtual,使程式更加清晰。
如果在派生類中沒有對基類的虛擬函式重新定義,則派生類簡單地繼承其直接基類的虛擬函式。
定義一個指向基類物件的指標變數,並使它指向同一類族中需要呼叫該函式的物件。
通過該指標變數呼叫此虛擬函式,此時呼叫的就是指標變數指向的物件的同名函式。通過虛擬函式與指向基類物件的指標變數的配合使用,就能方便地呼叫同一類族中不同類的同名函式,只要先用基類指標指向即可。如果指標不斷地指向同一類族中不同類的物件,就能不斷地呼叫這些物件中的同名函式。
這就如同前面說的,不斷地告訴計程車司機要去的目的地,然後司機把你送到你要去的地方。
c++中虛擬函式如何定義,使用時應該注意什麼?
3樓:千鋒教育
/*--
定義純虛擬函式介面:virtual void f()=0; //只是提供介面,實現留給繼承類
使用時應注意:子類必須要實現該函式
--*/
#include
using namespace std;
class a
;class b:public a
};void main()
4樓:
虛擬函式的定義要這樣,virtual 返回型別+函式名(引數);
虛擬函式呼叫時要注意,在類繼承的時候,子類呼叫的虛擬函式和父類中虛擬函式的區別
5樓:匿名使用者
虛擬函式在宣告時與一般函式的不同地方就是需要新增一個標誌符virtual,在定義時和普通函式相同。在呼叫時和一般函式的呼叫也是相同的,只不過要注意多型而已。
是不是隻有虛擬函式才能定義為純虛擬函式,c++語法。
6樓:千鋒教育
你概念有點混淆了,這個virtual void fun()=0; 是純虛擬函式;virtual void fun(); 是虛擬函式。它們是有區別的。有純虛擬函式的類一般都是虛基類,主要用於繼承,讓子類來實現虛擬函式。
虛擬函式的作用當然是多型了~~
class base
{public:
void base::fun() {cout<<"base" return 0; } 如果fun 是虛擬函式顯示什麼,不是虛擬函式顯示什麼?自己試試 在某基類中宣告為 virtual 並在一個或多個派生類中被重新定 義的成員函式,用法格式為 virtual 函式返回型別 函式名 參數列 實現多型性,通過指向派生類的基類指標或引用,訪問派生類中同名覆蓋成員函式。虛擬函式定義 簡單地說,那些被virtual關鍵字修飾的成員函式,就是虛擬函式。虛擬函式... 純虛擬函式就是抽象類函式。宣告是virtual void fn 0 沒有實現體的函式。補充一點,含有純虛擬函式的類是抽象類 純虛擬函式是一種特du殊的虛函zhi數,它的一般格式dao如下 專class 類名 屬 在許多情況下,在基類中不能對虛擬函式給出有意義有實現,而把它說明為純虛擬函式,它的實現留... 虛擬函式用於實現類的繼承所體現的多型性,當一個類的成員函式被宣告為虛的,那麼這個類的派生類如果過載了這個函式,那麼在呼叫這個函式時,會先確認這個類例項是原來的類還是派生類 因為父類的指標可以指向子類 如果是父類,那麼呼叫父類的版本,如果是子類,則呼叫對應的子類的版本。class a class b ...什麼是虛擬函式,C虛擬函式講解,是不是隻有虛擬函式才能定義為純虛擬函式,C語法。
c純虛擬函式,C 中純虛擬函式有什麼作用
c 什麼是虛擬函式,構造與解構函式可以是虛擬函式嗎