学习
实践
活动
专区
工具
TVP
写文章

c+不是C语言的扩展,那些初学小白对c/c+的误解

很多人对C++语言都存在误解,以为C++就是C语言的扩展,包括我自己,最开始学习C++时也是这么认为的,一是因为名字太像了,然后C++面向过程部分,基本上如出一辙,各种思想基本一致,也难怪初学者会这么想。然后后面多了面向对象部分以及一些其他高级的内容,所以就理所当然的认为是C语言的扩充,直到深入学习后,也看到了大师们的看法,结合自己的思考,才真的体会到这种误解了。

C语言的灵魂是指针,掌握指针,C语言你可以说是学会了。但是,C++中,指针只不过是其中很小的一部分,我们不能否认指针在C++的重要性,但是,指针已经不是C++的核心了,而只是基础的部件而已。从这来看,C++确实不是C语言的扩展了。C++是借鉴了C语言,从C语言发展而来,但是C++走的太远太远,以至于变样了,回到家里,C都有点认不得它了。C++已经发展成了一门全新的语言了。

C++的核心是面向对象、模板和泛型编程。面向对象和泛型编程在思想体系中有一点点的冲突,对象是将数据封装成一个整体,有对象的方法来操作,而泛型编程却是使数据和方法分离,中间使用一个桥梁,让数据和方法进行连接操作,使操作更加灵活和强大。泛型编程在C++标准模板库STL中体现的淋漓尽致。但是,这面向对象和泛型编程思想却是不统一的,因此也就有人在批评C++的发展是不是有点混乱,有点自相矛盾不成体系,有点四不像。

其实,从面向过程结合面向对象,C++就已经有点想通吃了,想做到一个语言无所不能,以至于后面的泛型编程的出现。当然,各部分之间是有联系的,不然就真的不能成为一个体系了,只不过联系不太紧密,比较疏松罢了。也正是C++想大一统的想法,才导致C++变得复杂,让很多初学者望而却步。这也是很自然的事情。

但是,话说回来,要真正学得很深入,不管是什么语言,都是要学很多东西的。只不过一个顺序而已。

Java是纯面向对象语言,上手也快,但是要真正深入,同样要会面向过程,要懂得泛型编程等等,后面照样也是要花大量时间深入的,而C++只是上手比较难,但是上手后,一切都顺利了。想想,C++有点一站全的意思,其他语言有的,它都有,只不过一些概念名称不一样而已。C++学会了,其他语言几乎可以秒掉。当然C++要学得很深入。

虽然C++是很强大,但是前期的准备是要好的,这就是我为什么总是强调基础的重要性,C++要的要的是这个。C++从底层做起,没有扎实的基础,很难撑得起一片天空,所以要花大量时间学习C++的基础,基础学好,高级的特性,以及更高层的思想就能够轻松拿下。而其他语言就上手容易,但是深入很难,各种语言,到达终点的路径是一样长的,只是一个前紧后松和一个前松后紧的过程罢了。

所以在选择语言时,C++作为长远的发展,几乎是最好不过的一个选择了。当然这个只是建议。所以,想学好C++,必须脚踏实地,沉下心来学习,不能急躁,否则学不下去,也会不好,到时候说C++学了没用,那就是你自己的不对了。C++语言里,没有做不到的,只有想不到的。C++同时也是学无止境的,C++中无高手,是一些大师的信仰。但是,这个所谓的高手,肯定是那种出神入化的。

不过,初学者的我们,暂时也不奢求达到那个地步,能够学到几层功力,实际解决问题是完全不成问题的。

还有一点,提醒一下,目前的操作系统,基本上是用C和C++以及汇编语言写的,Windows系统中,程序的运行,首先是运行C运行库,然后再启动程序的入口点函数,也就是所谓的主函数。主函数退出,程序也并没有真的退出,而是调用了C运行库,最后才终止的。具体过程,以后大家深入了必然会了解到。

在此只是给大家一个信号,C++和C都是很有前途的,不要怀疑。本人是建议学C++的,既然选择了一门语言,就要坚持踏实的学下去,不要有任何犹豫,有没有用就看自己学的怎么样,而不是语言本身的问题。

“作为一名从事了10年开发的老程序员,最近我花了一些时间整理关于C语言、C++,自己有做的材料的整合,一个完整的学习C语言、C++的路线,学习材料和工具,项目的实战。C/C++、编程爱好者的聚集地!欢迎初学和进阶中的小伙伴。希望你也能凭自己的努力,成为下一个优秀的程序员。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以跟我一起学习!”

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200103A0HT9500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券