为什么要用static_cast转换而不用c语言中的转换?

求大神详细解释下为什么要用static_cast转换而不用c语言中的转换?

全部评论
区别在于转换时的安全检查,尤其是指针类型。 C的强制转换各种指针类型可以随便转,比如char*可以强制转为int*,但用static_cast,这样转会报错。
4 回复 分享
发布于 2017-08-07 23:56
static_cast不是什么类型都可以转换
3 回复 分享
发布于 2017-08-07 00:04
(来自《C++ prime 4th》5.12.7) 标准 C++ 为了加强类型转换的可视性,引入命名的强制转换操作符,为程序员在必须使用强制转换时提供了更好的工具。例如, 非指针的 static_cast 和const_cast 要比 reinterpret_cast 更安全。结果使程序员(以及读者和操纵程序的工具)可清楚地辨别代码中每个显式的强制转换潜在的风险级别。 虽然标准 C++ 仍然支持旧式强制转换符号,但是我们建议,只有在 C 语言或标准 C++ 之前的编译器上编写代码时,才使用这种语法。
点赞 回复 分享
发布于 2017-08-06 14:59
因为static_cast会在程序编译时就会进行判断该转换是否安全,如果判断不安全的话就会直接报错,而c语言中的强制转换是在运行时进行的,它没有这种判断机制,如果转换不安全的话,会造成运行时的隐患
点赞 回复 分享
发布于 2018-08-20 14:51
这样可以让程序员更加清晰的看到是类型强转,因为本身类型强转就是不安全的
点赞 回复 分享
发布于 2018-03-06 13:15
dynamic_cast如果是父类实体到子类的转换会是空指针,而且要求父类有虚函数 static_cast向下转型指针不变,向上转型指针会改变 reinterpret_cast重新解释类型
点赞 回复 分享
发布于 2017-08-10 09:08
个人感觉可读性更好,能体现程序员的意图,不清楚是否有什么特别的
点赞 回复 分享
发布于 2017-08-06 21:52
C++引入了新式的转换,包括static_cast,dynamic_cast,reinterpret_cast,和const_cast,较C中的单一强制转换,更加安全,也更容易区分,不同的cast适用不同的情况,若是基本类型的转换,static_cast和C中的没啥区别吧,个人理解,还请大神指出问题
点赞 回复 分享
发布于 2017-08-06 14:39

相关推荐

2025-12-09 00:23
南开大学 产品经理
1. 社会环境与职场结构性压力年龄歧视(隐形天花板): 部分行业(尤其是互联网、科技、广告等)存在“青春偏好”,认为年轻人更便宜、更有活力、更易接受新事物。36岁以上的员工可能被贴上“思维固化”“性价比低”的标签,导致晋升受阻或裁员时首当其冲。企业成本控制: 高龄员工通常薪资更高,社保等用工成本也更高。企业为压缩成本,可能倾向于用更年轻的员工替代,或直接将岗位外包、自动化。经济周期与行业迭代: 经济下行时,企业倾向于裁掉高薪资深员工;而高速变化的行业(如互联网)技术迭代快,若个人技能未能及时更新,容易被淘汰。2. 个人职业发展瓶颈技能停滞与知识老化: 部分岗位依赖经验积累(如管理、传统技术),但若所在行业技术革新剧烈(如人工智能冲击传统岗位),旧经验可能迅速贬值,而学习新技能的精力或动力不足。职业定位模糊: 如果在中年阶段未能转型为管理岗或专家岗,仍停留在执行层,可能面临与年轻人的直接竞争,体力和适应力上不占优势。家庭与精力分配: 中年往往面临家庭压力(育儿、养老),难以像年轻人一样无条件加班或频繁出差,在“内卷”环境中可能显得“不够拼”。3. 行业特性与市场供需体力或高强度行业: 如制造业工人、服务业一线员工,年龄增长可能导致体力下降,难以适应高强度劳动。新兴行业的人才泡沫: 某些行业(如互联网)在过去十年快速扩张,吸纳大量年轻人,但行业成熟后增速放缓,对高龄员工的包容度降低。yiduifu.com中年是人生中的一次职业重启,而不是终点。
2025.12.09 在牛客打卡1天!
点赞 评论 收藏
分享
头像 会员标识
2025-12-16 14:35
浙江大学 Java
点赞 评论 收藏
分享
评论
点赞
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务