C语言是面向过程的,面向过程语言的程序代码=算法+数据结构,而C++和JAVA是面向对象的语言,程序代码=对象+消息。
我认为面向对象和面向过程就没有本质的区别,只是使用不同的方法和角度去观察一个世界。软件设计就像写剧本,数据就是角色,流程就是情节,整个软件就象一部电影,面向对象只不过是把数据和对这类数据的处理捆绑在一起,在设计情节的时候就不必关心某个角色是如何完成某个动作的,只要安排各个角色按顺序完成动作就好了。而面向过程怎么做呢?那就是安排各个角色按顺序完成动作,而如何完成动作参见第几章第几节或下面的注解。
从程序上或者剧本上看,面向对象就是先描述角色的特点和如何完成各种动作,然后才是具体情节;面向过程就是先描述角色的特点,然后讲述情节,情节中对角色如何完成某个动作再写一个小说明。从组织上看,面向对象的方法组织得更好更清楚一些,而没有更多的不同。
至于派生和继承只是把同类角色具有的相同特点和动作放在一起描述罢了,因为这个角色和那个角色与其它的角色相比在某个方面相同或类似,所以把它们分为一类,这个类就成了一个基类了,例如老师和作家都是知识分子,那么就在这里一起描述一些知识分子具有什么共同的特点,而不再在老师这类角色和作家这类角色里赘述了。
两者是兼容的,c是c++的一个子集
c++支持面向对象功能的程序设计语言,而c语言是面向过程的程序设计语言,它不但具有c语言的短小精练,使用方便的特点,还在原来的基础上,使类型更严格,使用更方便。
简单来讲,c++是c的进阶,语法基本相同,不过很多用词不同,例如输出语句,c使用的是“prift”,而c++是“cout”
在语法上,c++更为严谨,它是类和函数的集合,即允许类体外的函数存在
在运算符上,c++增加了::,*,.,->以及动态内存方面的new和delete
c++还引进了内联函数的概念,减少了宏定义的使用