C 基礎 類繼承中方法過載

2021-09-23 22:17:04 字數 1194 閱讀 7193

一、前言

二、過載方法及虛函式

我們討論《c++ primer plus》中的如下場景:銀行記錄客戶資訊,包括客戶姓名、當前餘額。客戶這一類別當然能夠建立客戶物件、存款、取款以及顯示資訊。銀行需要特殊記錄具有透支許可權的客戶,因此這一類別的客戶要額外記錄透支上限、透支貸款利率以及當前透支總額。此外,取款和顯示資訊兩個操作必須考慮客戶的透支情況。綜上,具有透支許可權的客戶是客戶這一基類的派生類,派生類中不但需要新增新的成員,還要過載兩個繼承方法。

類宣告**:

類方法定義**:

上述**多了乙個新的語法特性:虛函式(virtual function)。當基類宣告中函式前加virtual,表示該函式為虛函式。區別在於當呼叫者是引用或者指標時,呼叫的是基類方法,還是派生類過載後的方法。具體區別我們後邊在討論。重中之重在於虛析構函式的意義。如果程式中使用delete刪除占用的動態記憶體,且用於索引記憶體位址的指標型別是基類,那麼即使該指標指向的是乙個派生類物件,此時僅基類析構函式被呼叫。我們著重觀察brassplus類過載的方法withdraw有什麼變化。這類客戶由於具有透支許可權,在取款時肯定要考慮欠款情況。若欲取出金額≤儲存金額,則直接呼叫基類方法withdraw,把儲存金額減小;若欲取出金額大於儲存金額,就必須進一步分析欠款情況。已欠款+此次欠款≤透支額度時,取款操作才有效。因此:owes+(amt - balance) ≤ maxloan,進一步變形為:amt ≤ balance+maxloan-owes。

三、應用程式示例及結果分析

列印結果:

pigg和hogg分別是基類和派生類物件。當兩種均取款額度超出儲存金額時,hogg由於具有透支許可權,才得以成功完成操作。注意之後建立的兩個物件dom和dot,從呼叫viewacct()函式過程中再次體會虛函式的意義。若沒有使用virtual關鍵字,程式根據引用或指標的型別選擇使用基類方法還是派生類同名的過載後方法。若使用該關鍵字,則根據引用或指標所指向物件的型別來選擇。程式中,b1_ref和b2_ref均是brass類引用,但分別是brass類物件dom和brassplus類物件dot的別名,因此使用virtual關鍵字後的viewacct()函式,依次呼叫基類和派生類方法。收工。

C 基礎 類繼承中方法過載

c 基礎 類繼承中方法過載 一 前言 二 過載方法及虛函式 我們討論 c primer plus 中的如下場景 銀行記錄客戶資訊,包括客戶姓名 當前餘額。客戶這一類別當然能夠建立客戶物件 存款 取款以及顯示資訊。銀行需要特殊記錄具有透支許可權的客戶,因此這一類別的客戶要額外記錄透支上限 透支貸款利率...

C 基礎 類繼承中方法過載

c 基礎 類繼承中方法過載 一 前言 二 過載方法及虛函式 我們討論 c primer plus 中的如下場景 銀行記錄客戶資訊,包括客戶姓名 當前餘額。客戶這一類別當然能夠建立客戶物件 存款 取款以及顯示資訊。銀行需要特殊記錄具有透支許可權的客戶,因此這一類別的客戶要額外記錄透支上限 透支貸款利率...

C 中方法過載

在方法的使用過程中,過載,重寫和隱藏是常用到的。下面著重介紹方法的這些使用。1 過載 過載是方法名不變,引數列表 引數型別或個數 不同的方法體現。注意 返回值可以相同也可以不同。當引數個數相同而引數型別不同的時候,可以考慮使用泛型,提高 的復用性。下面給出示例 public class func 2...