C++有四种类型转换操作符:static_cast、const_cast、dynamic_cast、reinterpret_cast。
1>. static_cast普通转换,如double转int:
1 double a = 10;
2 int b = static_cast<int>(a);
|
2>. const_cast改变const或者volatile属性:
1 const char* szA = "test";
2 char* szB = const_cast<char*>(szA);
3>. dynamic_cast把指向基类的指针或引用转换成指向派生类或者基类的兄弟类的指针或引用:
1 class Base
2 {
3 public:
4 virtual void test(){} //基类必须有虚函数
5 };
6
7 class Child : public Base
8 {
9 public:
10 void print(){ cout << "child::base" << endl; }
11 };
12
13 Base* pBase = new Base();
14 Child* pChild = dynamic_cast<Child*>(pBase);
15 pChild->print();
|
4>. reinterpret_cast用来在函数指针之间进行类型转换
1 typedef void (*FuncPtr)();
2 FuncPtr funcPtrArray[10];
3 int doSomeing(){return 0;}
4
5 funcPtrArray[0] = reinterpret_cast<FuncPtr>(&doSomeing);
posted on 2011-03-07 14:28
郭小帅 阅读(304)
评论(0) 编辑 收藏 引用 所属分类:
C++