#include
#include
class A{ // A
public: virtual ~A(){};}; // / \
class B: public virtual A{}; // B C
class C: public virtual A{}; // \ /
class D: public B, public C{}; // D
void demo(A *a){
D* d = dynamic_cast(a);
if (d) { ... }
}
int main(){
D *d = new D; demo(d);
return 0;
}
Сілтемелерді түрлендіру
Аргумент-сілтеме үшін түрлендіру операциясының мағынасы
нұсқауыштарқа қарағанда өзгешелеу болып келеді. Сілтеме əрқашанда
нақты көрсетілетін объектіге нұсқайтын болғандықтан,
dynamic_cast
опе-
рациясы дəл осы объектінің типіне түрлендіруді орындауы керек. Келтіру
операциясының дұрыстығы автоматты түрде тексеріледі, сəйкессіздік
жағдайында
bad_cast
аластамасы туындайды:
Достарыңызбен бөлісу: |