.


:




:

































 

 

 

 


static_cast




:

;

;

;

, , .

 

static_cast <> ()

, , , . , . static_cast .

, . .

dynamic_cast. , , static_cast. , dynamic_cast ,

.

 

dynamic_cast

.

, . , . RTTI (run-time type information) . , dynamic_cast , . dynamic_cast ,

, .

, , :

, , . , dynamic_cast . dynamic_cast .

, f2. , demo , ,

dynamic_cast :

#include <iostream.h>

#include <typeinfo.h>

class B{

public: virtual void fl () { };

};

class C: public B{

public: void f2(){cout "f2":};

};

void demo(6* p){

C* = dynamic_cast<C*>(p);

if (c) c->f2();

else cout " ";

}

int main(){

* b = new ;

demo(b); // " "

* - new ;

demo(c); // "f2" ()

Return 0;

}

dynamic_cast

, :

* = (*) ;

, PI , .

, . dynamic_cast

, . ,

:

#include <iostream.h>

#include <typeinfo.h>

class A{

public: virtual ~A(){};}

c]ass B: public virtual A{};

class C: public virtual A{};

class D: public B. public C{};

void demo(A *a){

D* d = dynamic_cast<D*>(a);

i f (d) {... }

/ / A

/ / / \

/ /

/ / \ /

/ / D

int main(){

D *d = new D; demo(d);

Return 0;

}





:


: 2016-07-29; !; : 365 |


:

:

: , .
==> ...

1341 - | 1284 -


© 2015-2024 lektsii.org - -

: 0.009 .