大家好,我是小新,我来为大家解答以上问题。static_cast和dynamic_cast区别,static_cast很多人还不知道,现在让我们一起来看看吧!
static_cast 在编译时使用类型信息执行转换, 在转换执行必要的检测(诸如指针越界计算, 类型检查). 其操作数相对是安全的.
功能与(int)等强制转换类似。但是多了一些必要的检查机制。
int a = 1;
void *p = &a;
cout<<*(int*)p;
cout<<*static_cast(p); 效果相同。 但是如果是 cout<<*static_cast(p); 就会报错。 但是double a = 1.2; 再如上面,都会正确。 因为double 可以转int只是有误差而已。 语法还是正确的。
本文到此讲解完毕了,希望对大家有帮助。