沙田镇网站建设公司,wordpress上传ftp设置密码,国外ip怎么弄,北京企业网站建设方案C语言的转换是在变量前加类型名进行转换的#xff0c;比如double pi 3.14;int a (int) pi;对于指针也是如此double* dptr pi;int* iptr (int*)dptr;虽然c兼容了C语言的转型方式#xff0c;但是也做了很多限制#xff0c;比如向上类型转换#xff0c;在c中建议使用…C语言的转换是在变量前加类型名进行转换的比如double pi 3.14;int a (int) pi;对于指针也是如此double* dptr pi;int* iptr (int*)dptr;虽然c兼容了C语言的转型方式但是也做了很多限制比如向上类型转换在c中建议使用c的转型方式 (1). static_casttype(expression)这是普通的类型转换比如double转int,普通的指针转换但是无法对const进行转换,他有和C语言类型转换差不多的限制比如不能把一个类转为另一个类。但是可以支持派生类转为基类。不支持基类转为派生类(2).const_casttype(expression)消除常量转换为普通可以修改的变量(3)dynamic_casttype(expression)用于继承体系的转换是对指针或者引用的转换普通常量不行并且这种类型转换正常情况下只能向上做类型转换不能向下转只有在虚继承的情况下才有意义比如实现多态#include iostream
using namespace std;class Base{};
class Derive: public Base{};int main(int argc, char** argv) {Base b;Derive d;//理论上来讲能够向上类型转换b d;//正常的转换-隐式类型转化d b; //无法从父类转为派生类return 0;
}正确的用法#include iostream
using namespace std;class Base{
public:virtual ~Base(){}
};
class Derive: public Base{};int main(int argc, char** argv) {Base b;Derive d;Derive pd dynamic_castDerive(d);return 0;
}(4)reinterpret_casttype(expression)这是一个和操作平台息息相关的类型转换主要用于函数指针的类型转换