C++タイプ変換static_cast、dynamic_cast、const_cast、reinterpret_cast
1989 ワード
:C++ , dynamic_cast,const_cast,static_cast,reinterpret_cast。 dynamic_cast , dynamic_cast, 。
6.1、dynamic_cast : , dynamic_cast , dynamic_cast< >( ), , B B D, B *pb; D *pd, md; pb=&md; pd=dynamic<D*>(pb); D pb D , D pd, , pd pd=&md; ? , B D D , D , D g(), dynamic_cast<D*>(pb)->g(); dynamic_cast , 。 , pb B 。 。 dynamic_cast , dynamic_cast , 。
6.2、dynamic_cast :dynamic_cast 。dynamic_cast 。dynamic_cast , , , 0 , , bad_cast , dynamic_cast if , pd=dynamic_cast<D*>(pb); if(pd){…}else{…}, if(dynamic_cast<D*>(pb)){…}else{…}。
6.3、const_cast : const_cast< >( ), 。 const volatile,const_cast const , , , const_cast 。const_cast , const volatile, const_cast int double, const int int。const_cast 。const_cast :int a=3; const int *b=&a; int* c; c=const_cast<int*>(b); *c=4; cout<<a<<*c; 4, const_cast *c , const_cast , b a 。
6.4、static_cast : , , static_cast int double, , A B 。static_cast c 。
6.5、reinterpret_cast : , , , , 。