关于用static_cast类型转换

NewBabyNiu 2010-02-17 04:32:57
double d = 97.1;
char c1 = static_cast<char>(d);
char c2 = (char)d;

这两种转换方式得到的结果一样, 其他语言用c2的比较多, 请问在C++ 里面static_cast是一种标准用法还是有其它的区别?
谢谢!
...全文
473 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovesi3344 2010-02-17
  • 打赏
  • 举报
回复
楼上牛逼
mstlq 2010-02-17
  • 打赏
  • 举报
回复
就我所知
static_cast对转换的双方要求比较严格,可以把很多错误扼杀在编译期……


#include <iostream>
#include <cstdlib>
using namespace std;
class B
{
int i;
};

class d:public B
{
int i;
};



int main(void)
{
B *pd=new d;
d *p1=(d *)pd;/*可以*/
d *p2=static_cast<d *>(pd);/*可以*/
int *pi=new int[10];
d *p3=(d *)pi;/*可以通过编译,但是类似这样的代码在逻辑上一般都说不过去*/
d *p4=static_cast<d *>(pi);/*不允许这样的转换*/

delete []pi;
delete pd;
system("pause");
return 0;
}
sicxun 2010-02-17
  • 打赏
  • 举报
回复
static_cast 搜索会很方便

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧