MSDN dynamic_cast static_cast const_cast reinterpret_cast
来源:互联网 发布:淘宝怎么申请天天特价 编辑:程序博客网 时间:2024/06/03 16:59
dynamic_cast 用于多态类型的转换
static_cast 用于非多态类型的转换
const_cast 用于移除 const, volatile, and__unaligned 属性.
reinterpret_cast 用于指针和类型间的相互转换
// dynamic_cast_1.cpp// compile with: /cclass B { };class C : public B { };class D : public C { };void f(D* pd) { C* pc = dynamic_cast<C*>(pd); // ok: C is a direct base class // pc points to C subobject of pd B* pb = dynamic_cast<B*>(pd); // ok: B is an indirect base class // pb points to B subobject of pd}
// dynamic_cast_2.cpp// compile with: /c /GRclass A {virtual void f();};class B {virtual void f();};void f() { A* pa = new A; B* pb = new B; void* pv = dynamic_cast<void*>(pa); // pv now points to an object of type A pv = dynamic_cast<void*>(pb); // pv now points to an object of type B}
// static_cast_Operator.cpp// compile with: /LDclass B {};class D : public B {};void f(B* pb, D* pd) { D* pd2 = static_cast<D*>(pb); // not safe, pb may // point to just B B* pb2 = static_cast<B*>(pd); // safe conversion}
// expre_const_cast_Operator.cpp// compile with: /EHsc#include <iostream>using namespace std;class CCTest {public: void setNumber( int ); void printNumber() const;private: int number;};void CCTest::setNumber( int num ) { number = num; }void CCTest::printNumber() const { cout << "\nBefore: " << number; const_cast< CCTest * >( this )->number--; cout << "\nAfter: " << number;}int main() { CCTest X; X.setNumber( 8 ); X.printNumber();}
// expre_reinterpret_cast_Operator.cpp// compile with: /EHsc#include <iostream>// Returns a hash code based on an addressunsigned short Hash( void *p ) { unsigned int val = reinterpret_cast<unsigned int>( p ); return ( unsigned short )( val ^ (val >> 16));}using namespace std;int main() { int a[20]; for ( int i = 0; i < 20; i++ ) cout << Hash( a + i ) << endl;}
- MSDN dynamic_cast static_cast const_cast reinterpret_cast
- dynamic_cast、const_cast、static_cast、reinterpret_cast
- static_cast, dynamic_cast, const_cast, reinterpret_cast
- const_cast,reinterpret_cast,static_cast,dynamic_cast
- const_cast、static_cast、reinterpret_cast、dynamic_cast
- static_cast,const_cast,dynamic_cast,reinterpret_cast
- dynamic_cast;const_cast;static_cast;reinterpret_cast;
- dynamic_cast 、reinterpret_cast 、 static_cast 、 const_cast
- dynamic_cast,const_cast,static_cast,reinterpret_cast
- static_cast,dynamic_cast,reinterpret_cast,const_cast
- static_cast, dynamic_cast, reinterpret_cast, const_cast
- static_cast、const_cast、reinterpret_cast、dynamic_cast
- const_cast,reinterpret_cast,static_cast,dynamic_cast
- const_cast,dynamic_cast,reinterpret_cast,static_cast
- static_cast dynamic_cast const_cast reinterpret_cast
- static_cast dynamic_cast reinterpret_cast const_cast
- static_cast | dynamic_cast | const_cast | reinterpret_cast
- static_cast,dynamic_cast,const_cast & reinterpret_cast
- 跳跃表Skip List
- 策略模式c++实现
- C语言内存分区
- C# 里弹出“确定”“取消”对话框
- 全位运算实现的俄罗斯方块-J2SE版
- MSDN dynamic_cast static_cast const_cast reinterpret_cast
- Centzy:坑爹的店铺必滚蛋
- 实现目录拷贝 复制目录 复制文件
- Hibernate部分jar包的功能说明
- c#字符串压缩与解压缩
- vc6.0 无法打开streambuf问题解决(借鉴总结)
- 网线假连接导致的IP地址无法获取
- 生成0字节的core文件,gdb 无法识别core 文件
- js实现多个复选框的全选与取消