M25 將構造方法和非成員方法虛化

2021-09-08 14:20:34 字數 547 閱讀 6459

1、所謂虛化,就是根據引用或者指標的真實型別,決定呼叫哪個方法。

2、構造方法虛化,就是根據引用(或者指標)的真實型別,構造出乙個物件,如果指標的真實型別是base,返回base*;如果指標的真實型別是derived,返回derived*。解決辦法是:base定義乙個virtual方法clone,呼叫new base(*this),返回base*;derived重寫clone方法,呼叫new derived(*this),返回derived*。注意:一般情況下,子類重寫父類方法,要求返回型別必須一致。目前,父類返回base*,子類重寫可以返回derived*,也就是說c++支援協變。(口訣:進去叛逆,出來和諧)

3、將非成員方法虛化,考慮output操作符《的虛化。c++的多型是動態單分派,只會根據方法擁有者的真實型別決定呼叫哪個方法,因此要讓《虛化,需要在base中定義方法virtual ostream& operator<<(ostream& str) ; 但是,這種情況下,要b《使用非成員方法ostream& operator<< (ostream& s, const base& b); 在該方法中呼叫虛方法b.print(s);

成員變數和構造方法

直接在類中定義的變數 特點 成員變數有預設值 int 0,double 0,char bollean false,其他型別 null 成員變數在整個類中都有效,一般位於類的頭部 作用 詳細描述物件資訊 package classandvalue public class test 其方法名是類名,且...

Date類的構造方法和成員方法

首先簡單概述一下這個date類,這個類的作用就是用來表示日期和時間的類,這個date類的時間原點是以1970 年 1 月 1 日 00 00 00 gmt 英國格林威治 以來的指定毫秒數。因為中國在東八區,所以在中國的時間原定為1970 年 1 月 1 日 08 00 00.另外date類在表示日期...

繼承中構造方法和成員方法的訪問特徵

繼承中構造方法的訪問特徵 子類中所有的構造方法預設都會訪問父類無參的構造方法 因為子類會繼承父類中的資料,還可能使用父類的資料,所以,子類初始化之前一定要先完成父類資料的初始化。每乙個子類構造方法的第一條語句預設都是 super 如果父類中沒有無參構造方法只有帶參構造方法 通過使用super關鍵字去...