首页 > 语言 > 关键词   >  C++语言最新资讯  > 正文

C++强大的背后

2010-09-17 11:31 · 稿源:Milo的游戏开发,www.cnblogs.com/miloyip

使用C++常要重造轮子?

我曾参与的C++项目,都会重造不少标准库已提供的功能,此情况在其他语言中较少出现。我试图分析个中原因。首先,C++标准库相对很多语言来说是贫乏的,各开发者便会重复地制造自订库。从另一个角度看,C++标准库是用C++编写的(很多其他语言不用自身而是用C/C++去编写库),在能力和性能上,自订库和标准库并无本质差别;另外,标准库为通用而设,对不同平台及多种使用需求作取舍,性能上有所影响,例如EA公司就曾发表自制的EASTL规格,描述游戏开发方面对STL的性能及功能需求的特点;此外,多个C++库一起使用,经常会因规范不同而引起冲突,又或功能重叠,所以项目可能须自行开发,或引入其他库的概念或实现(如Boost/TR1/Loki),改写以符合项目规范。

C++编译速度很慢?

错,是非常慢。我认为C++可能是实用程序语言中编译速度最慢的。此问题涉及C++沿用C的编译链接方式,又加入了复杂的类/泛型声明和内联机制,使编译时间倍增。在C++对编译方法改革之前(如module提案),可使用以下技巧改善:第一,使用pimpl手法,因性能损耗应用于调用次数不多的类;第二,仅包含必要头文件,并尽量使用及提供前置声明版本的头文件(如iosfwd);第三采用基于接口的设计,但须注意虚函数调用成本;第四,采用unity build,即把多个cpp文件结合在一个编译单元进行编译;第五,采用分布式生成系统如IncrediBuild。

C++缺乏什么功能?

虽然C++已经非常复杂,但仍缺少很多常见功能。 C++0x作出了不少改善,例如语言方面加入Lambda函数、闭包、类型推导声明等,而库方面则加入正则表达式、采用哈希表的unordered_set/unordered_map、引用计数智能指针shared_ptr/weak_ptr等。但最值得留意的是C++0x引入多线程的语法和库功能,这是C++演进的一大步。然而,模组、GC、反射机制等功能虽有提案,却未加进C++0x。

C++使用建议

为应用挑选特性集

我同意Stroustrup关于使用C++各种技术的回应:“你可以做,不意味着你必须这么做。(Just because you can do it, doesn‘t mean that you have to.)” C++充满丰富的特性,但同时带来不同问题,例如过分复杂、编译及运行性能的损耗。一般可考虑是否使用多重继承、异常、RTTI,并调节使用模版及模版元编程的程度。使用过分复杂的设计和功能,可能会令部分团队成员更难理解和维护。

为团队建立编程规范

C++的编码自由度很高,容易编写风格迥异的代码,C++本身也没有定义一些标准规范。而且,C++的源文件物理构成,较许多语言复杂。因此,除了决定特性集,每个团队应建立一套编程规范,包括源文件格式(可使用文件模版)、花括号风格。

尽量使用C++风格而非C风格

由于C++有对C兼容的包袱,一些功能可以使用C风格实现,但最好使用C++提供的新功能。最基本的是尽量以具名常量、内联函数和泛型取代宏,只把宏用在条件式编译及特殊情况。旧式的C要求局部变量声明在作用域开端,C++则无此限制,应把变量声明尽量置于邻近其使用的地方,for()的循环变量声明可置于for的括号内。 C++中能加强类型安全的功能应尽量使用,例如避免“万能”指针void *,而使用个别或泛型类型;用bool而非int表示布尔值;选用4种C++ cast关键字代替简单的强制转换。

结合其他语言

如前文所述,C++并非适合所有应用情境,有时可以混合其他语言使用,包括用C++扩展其他语言,或在C++程序中嵌入脚本语言引擎。对于后者,除了使用各种脚本语言的专门API,还可使用Boost或SWIG作整合。

C++学习建议

C++缺点之一,是相对许多语言复杂,而且难学难精。许多人说学习C语言只需一本K&R《C程序设计语言》即可,但C++书籍却是多不胜数。我是从C进入C++,皆是靠阅读自学。在此分享一点学习心得。个人认为,学习C++可分为4个层次:

第一层次,C++基础:挑选一本入门书籍,如《C++ Primer》、《C++大学教程》、或Stroustrup撰写的经典《C++程序设计语言》或他一年半前的新作《C++程序设计原理与实践》,而一般C++课程也止于此,另外《C++ 标准程序库》及《The C++ Standard Library Extensions》可供参考;

第二层次,正确高效地使用C++:此层次开始必须自修,阅读过《(More)Effective C++》、《(More)Exceptional C++》、《Effective STL》及《C++编程规范》等,才适宜踏入专业C++开发之路;

第三层次,深入了解C++:关于全局问题可读《深入探索C++对象模型》、《Imperfect C++》、《C++沉思录》、《STL源码剖析》,要挑战智商,可看关于模版及模版元编程的书籍如《C++ Templates》、《C++设计新思维》、《C++模版元编程》;

第四层次,研究C++:阅读《C++语言的设计和演化》、《编程的本质》(含STL设计背后的数学根基)、C++标准文件《ISO/IEC 14882:2003》、C++标准委员会的提案书和报告书、关于C++的学术文献。

由于我主要是应用C++,大约只停留于第二、三个层次。然而,C++只是软件开发的一环而已,单凭语言并不能应付业务和工程上的问题。建议读者不要强求几年内“彻底学会C++的知识”,到达第二层左右便从工作实战中汲取经验,有兴趣才慢慢继续学习更高层次的知识。虽然学习C++有难度,但也是相当有趣且有满足感的。

数十年来,C++虽有起伏,但她依靠其使用者而不断得到顽强的生命力,相信在我退休之前都不会与她分离,也希望更进一步了解她,与她走进未来。

本文转自博客园    原文:C++强大背后

举报

  • 相关推荐
  • 大家在看
  • @毛光光 解约背后,MCN和红人“同床异梦”

    太阳底下没有新鲜事。2025年,达人和MCN分手、解约的故事仍在重复上演。 7月16日,全网粉丝量超过2000万的头部剧情达人@毛光光 在自己的抖音新账号@毛光光(重新出发)中正式官宣了自己和原公司解约、单飞的事宜。 视频中,他表示目前已将原账号全部交还给公司,其中包含粉丝量1000多万的抖音账号。谈到分手原因,他称自己和公司的合作一直非常愉快,不存在闹掰一说�

  • 一座工厂的背后:KÉSZ集团如何为中国企业提供欧洲建厂一体化服务?

    中国新能源车企加速全球化布局,匈牙利成为重要战略支点。文章以某中国企业在塞格德建设欧洲首个新能源乘用车工厂为例,展现了本土化落地的复杂性。KÉSZ集团作为匈牙利最大综合性建筑服务商,通过旗下专业团队提供从设计审批、钢结构制造到能源配套的全链条服务。其特色在于:设计阶段由bim.GROUP主导本土化适配;施工环节通过AI辅助制造中心实现快速交付;配套方面提供绿色办公园区及充电设施。这种"系统解决方案商"模式,整合了跨国项目所需的各类资源,助力中国企业高效落地欧洲市场。

  • 享界S9喜迎OTA:智驾更强大 车位到车位全程无断点

    享界S9迎来重磅OTA升级,从鸿蒙座舱到乾崑智驾全方位焕新,为用户带来更智能、更便捷的出行体验。 在鸿蒙座舱体验上,新增4种动态迎宾灯效,星芒、萌宠等专属灯效,用蓝牙钥匙解锁时投射车前地面,氛围感拉满;还有体感游戏步步跟随”,让驻车时光趣味十足。 扶手屏儿童锁功能,可通过设置、控制中心或语音指令快速操作,防止儿童误触,守护行车安全。 幕布悬�

  • “成人安抚奶嘴”走红 月销破千背后暗藏健康隐忧

    近日,电商平台上一款原本专属于婴儿的硅胶产品——成人安抚奶嘴悄然走红,月销量突破千件的单品屡见不鲜,部分店铺月销量甚至超过 2000 件,成为消费市场新现象。这一趋势背后,既有年轻人对"解压神器"的追捧,也引发了医学界对潜在健康风险的担忧。 ​电商平台数据显示,成人安抚奶嘴价格区间跨度极大,从 10 元到 500 元不等,部分商家在商品页面醒目标注

  • 诺贝尔奖得主站台 “萃龄肽”:黛安蒂核心成分背后的科学密码

    护肤品牌黛安蒂联合诺贝尔生理学奖得主兰迪·谢克曼推出"细胞精准递送"抗衰技术,基于囊泡运输理论研发核心成分"溯龄肽"。该技术突破传统抗衰模式,通过七种多肽协同作用,精准调控细胞囊泡运输系统,提升胶原蛋白合成57%,抗氧化酶活性提升179%,实现低浓度(500μg/ml)多重功效。实验证实该技术能促进弹性蛋白合成29%,提升维生素C透皮率40-60%。兰迪教授指出衰老本质是细胞运输效率衰退,该技术通过优化细胞自主吸收能力,重新定义50+人群抗衰标准,标志着从"补充"到"调控"的抗衰范式革新。

  • 格之格崛起范本:打印耗材行业背后的博弈

    珠海被誉为"世界打印耗材之都",经过30余年发展,已形成全球最完整的通用打印耗材产业链。格之格作为行业领军品牌,2024年全球销量第一,累计销售1.68亿支耗材,拥有6200多项专利,构建了覆盖全国的2000多家服务网点。该品牌突破技术壁垒,自主研发芯片、碳粉等核心部件,实现从耗材到整机的全产业链布局。未来五年,格之格将聚焦"绿色智能、安全可控"方向,推动中国耗材产业向高端场景拓展、标准输出升级和生态协同进阶,展现中国品牌在全球技术密集型领域的全链自主创新能力。

  • 被“全球用户喜爱”背后:是什么成就了小熊电器?

    小熊电器在全球100多个国家获得消费者喜爱,通过"被需要"、"被认可"到"被喜爱"的品牌发展三阶段,成功从功能需求升级为生活方式品牌。其核心在于:1)精准洞察用户需求,创新研发酸奶机等细分产品;2)建立完善研发体系,拥有600名研发人员和3700项专利;3)打造五大智能制造基地,构建"用户需求-研发-制造"闭环。2025年荣获"全球消费者喜爱的品质品牌",印证其通过场景化解决方案(如带娃、早餐等8大场景)实现从产品到生活方式的转型,成为连接用户与品质生活的桥梁。这标志着中国品牌正从"生产好产品"向"定义好生活"升级。

  • 十五年磨一“蛙”,蛙来哒单品战略背后的极致主义

    蛙来哒凭借对牛蛙单品的极致深耕,打破"单品易逝"魔咒,15年专注打造国民级爆款。其成功源于:1)供应链深度布局,首创"稻蛙共生"绿色养殖模式,实现品质与环保双赢;2)235次研发打造"紫苏牛蛙"招牌菜,独创"高温快炸+文火慢炖"工艺锁住鲜嫩;3)创新"经典+爆款"双线策略,既守住核心用户味蕾记忆,又通过臭豆腐蛙等突破性产品吸引年轻客群。目前全国500+门店年销超千万锅,稳居品类头部,证明单品极致化同样能成就品类王者。

  • “科技+法治”融合创新!itc保伦股份全面助力重庆某司法局打造司法行政“最强大脑”

    重庆某司法局与ITC保伦股份合作打造"数字法治·智慧司法"指挥中心,通过无纸化会议系统、远程视频会议系统等智能化解决方案,实现司法行政工作数字化升级。系统具备国产化CPU、嵌入式操作系统等核心技术,确保数据安全;支持4K高清视频传输和智能中控,提升会议效率和应急指挥能力。项目实现了多系统联动管理,形成"司法大脑",助力司法行政工作高效开展,成为智慧司法建设的标杆案例。

  • 确诊已超3000例!广东一村发重要通知:六点一起在家点蚊香! 背后原因硬核

    近日,广东佛山顺德北滘镇莘村村委会发布通知称,为了进一步做好蚊媒传染病防治工作,号召全民在家一起点蚊香。 通知全文如下: 为了进一步做好蚊媒传染病防治工作,守护村民健康。请全体村民配合于今天下午6点一起在家中点燃蚊香,同时村委将安排户外消杀同步进行,共同做好杀蚊灭蚊行动。 在此呼吁全体村民共同参与,翻盆倒罐清积水,齐齐动手灭蚊虫。倡议�

这篇文章对你有价值吗?

今日大家都在搜的词: