基類指標所指物件的實際型別
必須從基類開始提供型別虛函式
所有的派生類都必須重寫型別虛函式
每個派生類的型別id必須唯一
dynamic_cast這個關鍵字如果要轉換的實際型別和指定的型別不一樣,則會返回null。例如當指定型別為子類物件時,如果父類指標的動態型別是這個子類物件時,沒有錯誤,而動態型別是父類物件或者其他子類物件時 錯誤
dynamic_cast要求使用的目標物件型別是多型的,即:所在類族至少有乙個虛函式
只能用於指標和引用之間
用於指標轉換時,轉換失敗返回空指標
用於引用轉換時,轉換失敗將引發bad_cast異常
typdeid 專門用於動態型別識別
它是乙個關鍵字
typeid返回乙個type_info類物件
使用時需要包含標頭檔案
直接指定物件或者型別,普通型別普通物件也可以
a,多型
class parent
;
virtual int type()
};class child : public parent
;
int type()
int add(int a, int b)
};void test(parent* p)
};class child : public parent
};class newchild : public parent
;void test(parent* p)
};class child : public parent
};class newchild : public parent
;void test(parent* p)
else if( typeid(*p) == typeid(newchild) )
else if( typeid(*p) == typeid(parent) )
}int main(int argc, char *argv)
Objective C中動態識別的方法
objective c中動態識別的方法 bool iskindofclass classobj 是否是其子孫或一員 bool ismemberofclass classobj 是否是其一員 bool respondstoselector selector 是否有這種方法 bool instances...
C 3的分部方法
作用是乙個可選的鉤子,如果沒有實現,則不會有任何的開銷。比如 myform.cs partial class myform public myform partial void custominitialize partial void setup myformhandwritten.cs part...
C 3種繼承的區別
從下面的圖可以看出!繼承類中的成員,對3種屬性的訪問都是一樣的,都能訪問父類中的public和proteced,但是不能訪問private 繼承類產生的物件,除了公有繼承可以訪問public,其他2個繼承,物件都不能訪問父類的成員。保護成員和私有成員的區別就在於 保護繼承中的變化!公有繼承 物件訪問...