Just a note
static_caststatic_cast在功能上基本上与C风格的类型转换一样强大,含义也一样。它也有功能上限制。例如,不能用static_cast象用C风格的类型转换一样把struct转换成int类型或者把double类型转换成指针类型,另外,static_cast不能从表达式中去除const属性,因为另一个新的类型转换操作符const_cast有这样的功能。 const_castconst_cast用于类型转换掉表达式的const或volatileness属性。通过使用const_cast,向人们和编译器强调通过类型转换想做的只是改变一些东西的constness或者 volatileness属性。这个含义被编译器所约束。如果试图使用const_cast来完成修改constness 或者volatileness属性之外的事情,类型转换将被拒绝。到目前为止,const_cast最普通的用途就是转换掉对象的const属性。dynamic_cast它被用于安全地沿着类的继承关系向下进行类型转换,把指向基类的指针或引用转换成指向其派生类或其兄弟类的指针或引用。失败的转换将返回空指针(当对指针进行类型转换时)或者抛出异常(当对引用进行类型转换时)。它不能被用于缺乏虚函数的类型上。
Powered by: C++博客 Copyright © 大胖