virtual在C 中的用法

2021-10-20 15:31:24 字數 1385 閱讀 7133

virtual表示虛擬的含義但在c#中預設的成員是非虛擬的,通常將類中的成員定義為虛擬的,表示這些成員在繼承後 可以被重寫其中的內容

virtual關鍵字可以修飾方法、屬性、索引器 以及事件等用到父類的成員中

使用virtual 關鍵字修飾屬性和方法的語法形式如下

//修飾屬性

public virtual 資料型別 屬性名

//修飾方法

訪問修飾符 virtual 返回值型別方法

例子:class person

}class student:person

}class teacher:person

}但對於以上** 需要消除**冗餘,在這使用base  關鍵字呼叫父類的print方法。

例子:class student:person

}class teacher:person}

方法隱藏和方法重寫 之間的區別

class program

}class a

}class b :a

}class c :a

}執行上面的**,效果如下圖所示。

從上面的執行效果可以看出,使用方法隱藏的方法呼叫的結果是父類 a 中 print 方法中的內容,而使用方法重寫的方法呼叫的結果是子類 c 中 print 方法中的內容。

因此方法隱藏相當於在子類中定義新方法,而方法重寫則是重新定義父類中方法的內容。

從上面的**也可以看出,在「a a1=new b()」語句中 a 類是父類、b 類是子類,相當於將子類轉換成父類,即隱式轉換。

如果需要將父類轉換成子類,則需要強制轉換,並且在強制轉換前需要先將所需的子類轉換成父類,示例**如下。

a a2=new c();

c c=(c) a2;

c.print();

在上面的例項中,a2 是父類物件,然後將其強制轉換成 c 類物件。

object 類中的 tostring 方法能被類重寫,並返回所需的字串,通常將其用到類中返回類中屬性的值。

在 student 類中新增重寫的 tostring 方法,**如下。

class student

public string grade

public void print()

public override string tostring()

}這樣,在呼叫 student 類中的 tostring 方法時即可獲取專業和年級的值。

此外,除了 tostring 方法,在類中也可以重寫 equals 方法、gethashcode 方法。

C 中virtual(虛函式)的用法

在物件導向的c 語言中,虛函式 virtual function 是乙個非常重要的概念。因為它充分體現了物件導向思想中的繼承和多型性這兩大特性,在c 語言裡應用極廣。比如在微軟的mfc類庫中,你會發現很多函式都有virtual關鍵字,也就是說,它們都是虛函式。難怪有人甚至稱虛函式是c 語言的精髓。那...

C 中virtual的三種用法

virtual用法一 includeusing namespace std class a int main int argc,char argv 這段 列印出的結果為b,但是當把a類中的virtual去掉之後列印出的就為a。當基類中沒有virtual的時候,編譯器在編譯的時候把p看做a類的物件,呼...

C 中virtual(虛函式)的用法 詳解

在物件導向的c 語言中,虛函式 virtual function 是乙個非常重要的概念。虛函式是指乙個類中你希望過載的成員函式 當你用乙個 基類指標或引用 指向乙個繼承類物件的時候,呼叫乙個虛函式時,實際呼叫的是繼承類的版本。摘自msdn 舉例 include using namespace std...