学习C 的几个难度文库.docx

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

困难度之一

「C++是个难学易用的语言」,这句话相信很多人心有戚戚。C++的学习难度,一在於语言本身太多的「幕」,一在於paradigmshift(思考模式的移转)。

传统循序语言如C,Pascal,Basic,Fortran...,除了模样看起来稍有不同,基本上都是函式call来call去,大同小异,很容易掌握。你想做的动作,在code中都看得一清二楚。你所看不到的,荦荦大者也不过就是编译器为你的函式加上用以处理堆叠的一小段码(prologue和epilogue),这一小段码基本上做的是housekeeping工作,你没看到也没有关系(更好),并不影响你对程式逻辑的思考。

C++不一样,C++有太多和程式逻辑息息相关的动作是编译器为我们加上去的。换句话说C++编译器为我们「加码」。如果不识清这一节,学习C++有如雾里看花,雾非雾,花非花。

编译器为我们的C++程式加了什麽码呢?很多!物件诞生时ctor会被唤起,物件死亡时dtor会被唤起,这都是加码的结果。ctor中设定vtpr和vtbl,这也是加码的结果。new单一物件时会产生memoryblockcookie,new物件阵列时会产生一个内部结构记录着objectsize和classctor...,这也都是布幕後的工作。可以说,程式码中看不到而却必须完成的所有与程式逻辑有关的动作,统统都是C++编译器加码後的结果。

当「继承」发生,整个情况变得稍微复杂起来。「多重继承」又更复杂一些,「虚拟继承」再更复杂一些。

这些布幕後的主题,统可归类为所谓的C++objectmodel(物件模型)。如果不知道这些底层机制,你就只能够把makedestructorsvirtualinbaseclasses(,item14)或nevertreatarrayspolymorphically(,item3)这类规则硬背下来,却不明白它的道理。

用一样东西,却不明白它的道理,林语堂如是说:『不高明』。只知道how,不知道why,侯捷如是说:『不高明』。

困难度之二

C++的第二个学习难度在於 paradigmshift(思考模式的移转)。别说自己设计classes了,光使用别人的classes,就都是一种思考模式和行为模式的移转。MFC(或OWL或VCL)programmer必然甚能够领略并体会我的意思。

使用所谓的applicationframework(一种大型的、凝聚性强的、有着物件导向公共基础建设的classlibrary),你的码和framework之间究竟是怎样的关系呢?framework提供的一大堆可改写的虚拟函式的意义与价值究竟在哪里呢?为什麽framework所设计的种种美好性质以及各式各样的演算法竟然可以施行於我们自己设计的classtypes身上呢?framework被设计时,并不知道我们的存在呀!

这正是物件导向中的多型(polymorphism)的威力。

稍早所说的C++物件模型,偏属程式设计的低层面;这里所说的思考模式移转,则是程式设计的高层面。能够把新思维模式的威力发挥得最淋漓尽致的,当推物件导向的polymorphism(多型)和generalization(泛型)。如果你没有使用这两项特性,等於入C++宝山而空手返。

反覆磨炼,循环震荡

想像C++是一把用来解决程式问题的刀,要它坚轫,要它锋利,就必须经过多次的回火,在高热和骤冷之间炼。

初学C++语法(syntax)之後,你应该尽快尝试体验polymorphism(大致而言也就是虚拟函式的运用)。等到对OOP的精神有了大局掌控的能力,但对C++的许多小细节不甚清楚,就是回到C++物件模型炼的时机。

成长,是在高阶(polymorphism)和低阶(objectmodel)之间反覆震荡,才能够震荡到更高的位阶,而不是平平庸庸於中阶(C++syntax)的一滩死水。

文档评论(0)

hao187 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档