你了解c 中的關鍵字virtual嗎?

2021-10-09 12:10:39 字數 880 閱讀 8319

virtual在英文中表示「虛」、「虛擬」的含義。c++中的關鍵字「virtual」主要用在兩個方面:虛函式與虛基類。下面將分別從這兩個方面對virtual進行介紹。

虛函式源於c++中的類繼承,是多型的一種。在c++中,乙個基類的指標或者引用可以指向或者引用派生類的物件。同時,派生類可以重寫基類中的成員函式。這裡「重寫」的要求是函式的特徵標(包括引數的數目、型別和順序)以及返回值都必須與基類中的函式一致。如下所示:

class base

;

base稱為mytest類的虛基類。假設base還是另外乙個類mytest2的虛基類,對於多重繼承mytest和mytest2的子類mytest3而言,base的部分只繼承了一次。如下:

class base

{ int b;

public:

virtual void test(){ cout<<"基類方法!"說明:

1.若乙個類多重繼承自具有同乙個基類的派生類時,呼叫同名成員函式時會出現二義性。為了解決這個問題,可以通過作用域解析運算子澄清,或者在類中進行重新定義;

2.繼承關係可能是非常繁複的。乙個類可能多重繼承自別的類,而它的父類也可能繼承自別的類。當該類從不同的途徑繼承了兩個或者更多的同名函式時,如果沒有對類名限定為virtual,將導致二義性。當然,如果使用了虛基類,則不一定會導致二義性。編譯器將選擇繼承路徑上「最短」的父類成員函式加以呼叫。該規則與成員函式的訪問控制許可權並不矛盾。也就是說,不能因為具有更高呼叫優先順序的成員函式的訪問控制許可權是"private",而轉而去呼叫public型的較低優先順序的同名成員函式。

當然,宣告為純虛函式並不意味著在實現檔案中不可對其進行定義,只是意味著不可用抽象基類實現乙個具體的物件。

你了解c 中的關鍵字virtual嗎?

virtual在英文中表示 虛 虛擬 的含義。c 中的關鍵字 virtual 主要用在兩個方面 虛函式與虛基類。下面將分別從這兩個方面對virtual進行介紹。虛函式源於c 中的類繼承,是多型的一種。在c 中,乙個基類的指標或者引用可以指向或者引用派生類的物件。同時,派生類可以重寫基類中的成員函式。...

你了解this和super關鍵字嗎

this表示指向當前例項物件,區分物件的成員變數和方法形參 當方法的形參和成員變數的名字重名,可以使用this.變數名呼叫此類的成員變數 public class test public static void setage int age 子類用來呼叫父類的成員變數或方法。當子類的成員變數或方法與...

synchronized 關鍵字的了解

synchronized 關鍵字的介紹 synchronized關鍵字解決的是多個執行緒之間訪問資源的同步性,synchronized關鍵字可以保證被它修飾的方法或者 塊在任意時刻只能有乙個執行緒執行。例如每個執行緒表示乙個視窗 一張票,那麼用了這個關鍵字之後全世界在同一時刻只有乙個人在進行買票操作...