比如你可以用C写面向对象,这是可以的,你写一个struct,然后传指针给函数,模拟ADT,但那不是C的哲学。C式的编程应该是有容易被组织成几个目标文件(obj)的大量“原子”函数组成的。而函数所做的不是“针对某一数据结构进行某项操作”,而是像真正的函数那样“根据某种输入得到某种输出,以及相应的副作用”。而且其功能是足够基本的(考虑一下库函数的组织)。然后,程序的逻辑大量分散在灵活的函数组件中,最后汇总成为整个程序。
C强调(1)相信程序员,(2)轻量级,(3)灵活,(4)实用,(5)做一件事情只有一种方法。而C++强调(1)安全,(2)编译器检查程序员失误,(3)代码封装与复用,(4)各部件之间低耦合(5)提供尽量多的方法给程序员选用。所以用C++写C程序的人很难会对C++满意,而用C写C++程序的人也很难对C满意。这是由两种语言不同的设计哲学引起的。
举个小例子,很多情况下,C支持隐式转换,而C++必须你显式说明自己的意图,C程序员会认为C++不够灵活,而C++程序员会认为C不够安全。
这么说,C就像是一个相信自己的大姐姐,而C++更像是严厉的母亲。
[[it] 本帖最后由 StarWing83 于 2008-7-5 16:55 编辑 [/it]]