C++类型转换

*   C++提供了四种新的类型强制: 


static_cast 
const_cast 
reinterpret_cast 
dynamic_cast 


1)staic_cast静态强制; 


不能在无关的指针之间进行static类型强制 
class   CAnimal 

//... 
public: 
CAnimal(){} 
}; 


class   CGiraffe:public   CAnimal 

//... 
public: 
CGiraffe(){} 
}; 


int   main(void) 

CAnimal   an; 
CGiraffe   jean; 


an   =   static_cast <CAnimal> (jean);//将对象jean强制成CAnimal类型 
return   0; 



2、const_cast类型强制 


const_cast类型强制将一个const变量变成一个非const的等价形式 
int   main() 

const   int   j   =   99; 
int   *   k; 


k   =   const_cast <int   *> (&j);//解除const 
return   0; 



3、reinterpret_cast运算符 


reinterpret_cast运算符用来将一个类型指针转变为另一种类型的指针,也用在将整开型量转为指针,或将指针转为整型量上; 
int   main() 

int   j   =   10; 
int   *   ptr   =   &j; 
char   *   cptr; 


cptr   =   reinterpret_cast <char   *> (ptr);//将int指针类型转变为char的指针类型 


return   0; 



4、dynamic_cast运算符 


dynamic_cast的主要目的是: 


1)它返回派生类对象的地址; 
2)它测试基类指针是否指向下一尖括号 <> 中所指定类型的对象 


dynamic_cast是一个运行时类型信息,dynamic_cast运算符将指向派生对象的基类部分的基类指针转变为指向派生对象的派生类指针,dynamic_cast必须严格地指定与派生对象相同的类,或者它返回NULL指针; 
class   CAnimal 

//... 
}; 
class   CGiraffe:public   CAnimal 

//... 
}; 
class   CGoat:public   CAnimal 

//... 
}; 


int   main() 

CGiraffe   gene; 
CAnimal   *   aptr   =   &gene; 
CGiraffe   *   ptr1,*   ptr2; 


ptr1   =   dynamic_cast <CGiraffe   *> (aptr); 
ptr2   =   dynamic_cast <CGoat   *> (aptr); //return   NULL 


return   0; 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值