1 / 12
文档名称:

学习C语言后的感悟.docx

格式:docx   大小:18KB   页数:12页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

学习C语言后的感悟.docx

上传人:小枷 2019/5/15 文件大小:18 KB

下载得到文件列表

学习C语言后的感悟.docx

文档介绍

文档介绍:膇“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)的一滩死水。螄 蚂经常有很多初学者把C语言与C++语言混为一谈,确实,C语言的大部分函数都可以在C++中实现,C++也确实需要使用大量C语言的语法、函数。但是,C++与其他传统语言最大的区别应该就是它使用了“类”这么一个构造函数。蒇类,多么富有艺术性的词!想一想能把真实世界中的一切在它中模拟实现,就让人兴奋不已。掌握了它也就掌握了程序艺术的真谛、也就掌握了打通了现实与虚幻的时空门!肅在这里,我们来讨论一下在C++中有关于类的构成及使用。袄用C语言和其他类似的传统语言所写的程序必然包括一组数据结构以及用来处理这些数据结构的函数。由于这些语言没有提供数据抽象的功能,因此程序本身并不清楚哪些函数处理了数据结构。此外,这些语言也无法防止非授权访问的某些数据结构的函数对这些数据结构进行操作,因而使的程序变的不必要的复杂,并且容易忽视一写偶然的设计错误。肃而C++提供了数据结构的封装与抽象,它为程

最近更新

2025年度绿色环保土地大棚租赁服务协议 10页

2025年度离婚后子女监护权协议范本-@-1 7页

2025年度电动自行车生产设备与技术整体转让协.. 9页

2025年度特色民宿租赁经营合同 8页

2025年度海洋工程装备漆工施工耐腐蚀合同 9页

2025年度校园环境清洁与消毒服务合同 9页

2025年度智能制造业单位与个人劳动合同书 8页

2025年度新型节能门窗专业施工及维护服务合同.. 9页

2025年度教育机构招生考试与培训服务合作协议.. 9页

2025年度房屋租赁定金支付及监管协议 7页

2025年度建筑钢筋行业联盟采购与销售合同 9页

2025年度工伤赔偿协议书赔偿程序解析 8页

2025年度定制化钢构设施设计、生产、安装全流.. 11页

第三章职业环境分析 38页

2025年度商用空调系统安装与节能改造合同模板.. 8页

2025年度双方生物科技研发与成果转化合同书 8页

2025年度区块链技术应用合伙合作协议书 9页

2025年度农民工工资代付及争议解决服务合同 8页

2025年度养殖场劳务合同(畜禽品种改良与推广.. 9页

2025年度仓储货物装卸与搬运合同模板 9页

2025年度事业单位解除聘用合同员工离职面谈与.. 9页

智能仓储物流服务合同模板 6页

无人零售店运营管理服务合同 6页

不锈钢表面的酸洗钝化和检验 5页

单元4城市轨道交通员工职业化技能 72页

适应度函数构造 26页

新三板股权激励合同范本 6页

教育资助贷款抵押协议合同 6页

文化艺术中心装修条款3篇 48页

搅拌车租赁合同版 7页