C与C++的区别

来源:互联网 时间:1970-01-01

    很多初学者认为C++仅仅是C语言的扩充和补充,如果这么想,那么就大错特错了。C++与C语言最大的不同是解决问题时思维方式的不同,C++采用面向对象思维。而C语言则采取面向结构思维。

    面向结构思维的宗旨就是将一个大程序拆分成一个个很小的结构,这里有必要说明一下结构。结构是什么?结构就是实现一个或多个功能的代码块,比如"1+1=?",假如算出等于2,那么就是实现一个功能,而这个实现"1+1=2"的代码块就可看做是一个结构,或者叫做方法。

    面向结构思维就是要将一个大程序分化成若干个很小的结构,每个结构都完成一个或若干个功能,所有的结构集合起来就完成一个大功能。

    这样的编程思想在80年代前期还是可以的,但是到80年代后期,它的弊端就暴露出来了。

    首先程序可维护性方面,由于结构化编程仅仅是将大程序细化为若刚小结构,而并没有考虑数据安全性问题,比如说数据还是属于整个程序的,这样就导致某个地方对数据的修改,会对整个程序造成难以预料的影响。举个例子,某个游戏将怪物的生命值设定为100,而这种怪物在游戏中数量为30个,由于生命值属于整个程序的,而不是某个具体的怪物的,所以主角每砍怪物一下,30个怪物的生命都会下降10点,而主角杀死一个怪物以后,30个怪物都会死亡,这显然是不合理的。

    其次是程序的可重用性,由于结构化编程并没有将相关的数据和结构看做一个整体,所以无法利用已有的代码创建新的代码。打个比方,某个游戏公司永结构化的方式创造一个怪物,这个怪物的是有若干个结构和若干个数据组成的,游戏公司希望在它的基础上再创建一个新怪物,这个新的怪物仅仅是比旧的怪物多一个功能——跳跃,看上去要这个怪物似乎很简单,但是由于结构化编程并没有将怪物看做是一个整体,所以他们需要重新编写这个新怪物。

随着软件工程的发展,软件越来越大,数据越来越多,面向结构所带来的问题也越来越多,越来越严重,曾一度导致“软件危机”,面向对象就是为了解决“软件危机”而创造的,面向对象思想增加了大量的编程理念,它有能力将一个大程序拆分成若干个对象,每个对象中再封装部分数据和实现功能的方法,一个对象想要访问另外一个对象的数据,必须争得该对象的同意,而该对象的数据的改变也不会影响其他对象,从而解决了数据的安全性问题;另外一个方面,面向对象允许将具有相同特征的对象划分为一类,而同一类的对象又可以继续向下派生,父生子,子又生孙,代码不经修改就可重复利用,从而实现代码的重用。拿游戏做个比方,游戏中的30个怪物可以看做30个对象,每个对象都拥有一个生命值。同时由于对象是一个整体,所以我们要创造一个新怪物时,只需要在原来的怪物身上增加新功能即可,而不用重写该代码。

而面向对象的另外一个优点是支持多态性,多态性是什么呢?多态性是指不同的对象采取相同的方法导致不同的行为或结果。比如说我们要模拟一个足球游戏,不同的足球运动员代表不同的对象,而相同的方法则指的是射门这同一动作,由于运动员技术水平不同,所以技术好的运动员的进球的的概率高些,而技术差的运动员则踢飞球的概率高些。


相关阅读:
Top