static_cast
қолданылған жағдайда компилятордың мини-
малды түрде тексеру жүргізуіне, ал программалаушының
reinterpret_cast
көмегімен қауіпті түрлендірулерді белгілеуіне мүмкіндік береді. Түрлендірудің
нəтижесі программалаушы жауапкершілігіне жүктеледі.
Типті динамикалық түрде анықтау
Программаның орындалу барысында (RTTI) типті анықтау механизмі
ағымдағы уақыт мезетінде нұсқауыш қандай типке сілтеме жасап тұрғанын
анықтауға жəне объектілердің типтерін салыстыруға мүмкіндік береді. RTTI
механизмін пайдалану үшін тіл стандартына
typeid
операциясы жəне
type_info
1
класы енгізілген.
typeid
операциясының форматы:
typeid (тип)
typeid (өрнек)
Операция параметр ретінде типтің атауын немесе өрнекті қабылдап,
тип туралы ақпаратты сақтайтын
type_info
класының объектісіне сілтеме
қайтарады. Егер операция операндтың типін анықтай алмаса,
bad_typeid
аластамасы туындайды.
Операнд полиморфты типке нұсқауыш немесе сілтеме болған кезде,
нəтиже тип туралы динамикалық ақпарат түрінде болады (яғни,
type_infо
объектісінде дəл осы уақытта нұсқауыш сілтеме жасап тұрған объектінің типі
туралы ақпарат бар).
Егер операнд полиморфты емес типке сілтеме түріндегі өрнек болса, онда
type_infо
объектісінде өрнек сілтеме жасайтын объектінің типі туралы емес,
өрнектің типі туралы мəлімет сақталады.
typeid
операциясын мəліметтердің негізгі типтерімен де, туынды
типтерімен де пайдалануға болады.
type_info
класы
тақырыптық файлында төмендегідей түрде
сипатталған:
class type_info{
public:
virtual ~type_info();
bool operator==(const type_info& rhs) const;
Достарыңызбен бөлісу: |