学习c语言后的感悟

学习c语言后的感悟

ID:34712515

大小:55.47 KB

页数:7页

时间:2019-03-09

学习c语言后的感悟_第1页
学习c语言后的感悟_第2页
学习c语言后的感悟_第3页
学习c语言后的感悟_第4页
学习c语言后的感悟_第5页
资源描述:

《学习c语言后的感悟》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、“C++是个难学易用的语言”,这句话相信很多人心有戚戚。C++的学习难度,一在于语言本身太多的“幕”,二在于“paradigmshift”((思考模式的移转)。  传统程序语言如C,pascal,basic,fortran…,除了模样看起来稍有不同,基本上都是函数call来call去,大同小异,很容易掌握。你想做的动作,在code中都看得一清二楚。你所看不到的,荦荦大者也不过就是编译程序为你的函式加上用以处理堆栈的一小段码(prologue和epilogue),这一小段码基本上做的是housekeeping工作,你没看到也没有关系(更好),并不影响你对

2、程序逻辑的思考。  C++不一样,C++有太多和程序逻辑息息相关的动作是编译程序为我们加上去的。换句话说C++编译程序为我们“加码”。如果不识清这一节,学习C++有如雾里看花,雾非雾,花非花。  编译程序为我们的C++程序加了什么码呢?很多!对象诞生时ctor会被唤起,物件死亡时dtor会被唤起,这都是加码的结果。ctor中设定vtpr和vtbl,这也是加码的结果。new单一对象时会产生memoryblockcookie,new对象数组时会产生一个内部结构记录着objectsize和classctor…,这也都是布幕后的工作。可以说,程序代码中看不到而

3、却必须完成的所有与程序逻辑有关的动作,统统都是C++编译程序加码后的结果。  当“继承”发生,整个情况变得稍微复杂起来。“多重继承”又更复杂一些,“虚拟继承”再更复杂一些。  这些布幕后的主题,统可归类为所谓的C++objectmodel(对象模型)。如果不知道这些底层机制,你就只能够把“makedestructorsvirtualinbaseclasses”(,item14)或“nevertreatarrayspolymorphically”(,item3)这类规则硬背下来,却不明白它的道理。用一样东西,却不明白它的道理,林语堂如是说:“不高明”。只

4、知道how,不知道why,侯捷如是说:“不高明”。C++的第二个学习难度在于“paradigmshift”(思考模式的移转)。别说自己设计classes了,光使用别人的classes,就都是一种思考模式和行为模式的移转。Mfc(或owl或vcl)programmer必然甚能够领略并体会我的意思。使用所谓的applicationframework(一种大型的、凝聚性强的、有着面向对象公共基础建设的classlibrary),你的码和framework之间究竟是怎样的关系呢?framework提供的一大堆可改写的虚拟函式的意义与价值究竟在哪里呢?为什么fr

5、amework所设计的种种美好性质以及各式各样的算法竟然可以施行于我们自己设计的classtypes身上呢?framework被设计时,并不知道我们的存在呀!这正是面向对象中的多型(polymorphism)的威力。稍早所说的C++对象模型,偏属程序设计的低层面;这里所说的思考模式移转,则是程序设计的高层面。能够把新思维模式的威力发挥得最淋漓尽致的,当推面向对象的polymorphism(多型)和generalization(泛型)。如果你没有使用这两项特性,等于入C++宝山而空手归。  想象C++是一把用来解决程序问题的刀,要它坚轫,要它锋利,就必须

6、经过多次的回火,在高热和骤冷之间锤炼。  初学C++语法(syntax)之后,你应该尽快尝试体验polymorphism(大致而言也就是虚拟函数的运用)。等到对oop的精神有了大局掌控的能力,但对C++的许多小细节不甚清楚,就是回到C++对象模型锤炼的时机。成长,是在高阶(polymorphism)和低阶(objectmodel)之间反复震荡,才能够震荡到更高的位阶,而不是平平庸庸于中阶(C++syntax)的一滩死水。 经常有很多初学者把C语言与C++语言混为一谈,确实,C语言的大部分函数都可以在C++中实现,C++也确实需要使用大量C语言的语法、函

7、数。但是,C++与其他传统语言最大的区别应该就是它使用了“类”这么一个构造函数。类,多么富有艺术性的词!想一想能把真实世界中的一切在它中模拟实现,就让人兴奋不已。掌握了它也就掌握了程序艺术的真谛、也就掌握了打通了现实与虚幻的时空门!在这里,我们来讨论一下在C++中有关于类的构成及使用。用C语言和其他类似的传统语言所写的程序必然包括一组数据结构以及用来处理这些数据结构的函数。由于这些语言没有提供数据抽象的功能,因此程序本身并不清楚哪些函数处理了数据结构。此外,这些语言也无法防止非授权访问的某些数据结构的函数对这些数据结构进行操作,因而使的程序变的不必要的

8、复杂,并且容易忽视一写偶然的设计错误。而C++提供了数据结构的封装与抽象,它为程序员提供了定义

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。