如果不考虑上手时间的差异,C++在大部分领域比C有优势,写起来更方便,可以少操心一些细节,生产率高。

C和C++有个共同的弱点,就是运行时基础设施缺乏。例如,程序运行时想要知道一个结构里所有成员变量的名称,傻眼了吧,对,就是类似Java里的“反射”机制,是C和C++的弱项。

如果想要弥补这方面的功能,就要自己开发一套对象模型和动态查询机制,这个时候,C++已有的对象模型反而会成为干扰,C++已有的类、对象、继承等机制和新搭的框架之间的关系会成为一个棘手的问题。最简单的例子,如果要写一个叫 class 的结构,用C++就不行,因为 class 是C++的保留字。C的优势这时就体现出来了,C就像一张白纸,可以自由发挥,不受干扰。

总结一下:开发的项目抽象层次越高,例如GUI,C++越有优势;项目功能比较底层,且与C++对象模型本身相似,C更有优势,例如:脚本语言、runtime 框架、插件管理系统等。