知识大全 学习C++的最大难度

Posted 程式

篇首语:知识的根是苦的,它的果实是甜的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 学习C++的最大难度相关的知识,希望对你有一定的参考价值。

初学者编程入门:学习C++的最大难度  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

困难度之一 C++ 是个难学易用的语言 这句话相信很多人都心有戚戚 C++的学习难度 一在于语言本身太多的 幕 另一个就在于 paradigm shift (思考模式的移转) 传统语言如 C Pascal Basic Fortran 除了模样看起来稍有不同 基本上都是函式 call 来 call 去 大同小异 很容易掌握 你想做的动作 在 code 中都看得一清二楚 你所看不到的 也不过就是编译器为你的函式加上用以处理堆叠的一小段码(prologue 和 epilogue) 这一小段码基本上做的是 housekeeping 工作 你没看到也没有关系 并不影响你对程式逻辑的思考 C++ 不一样 C++ 有太多和程式逻辑息息相关的动作是编译器为我们加上去的 换句话说 C++ 编译器为我们 加码 如果不识清这一节 学习C++ 有如雾里看花 雾非雾 花非花 编译器为我们的 C++ 程式加了什么码呢?很多!物件诞生时 ctor 会被唤起 物件死亡时 dtor 会被唤起 这都是加码的结果 ctor 中设定vtpr 和 vtbl 这也是加码的结果 new 单一物件时会产生 memory block cookie new 物件阵列时会产生一个内部结构记录著 object size 和 class ctor 这也都是布幕后的工作 可以说 程式码中看不到而却必须完成的所有与程式逻辑有关的动作 统统都是 C++ 编译器加码后的结果 当 继承 发生 整个情况变得稍微复杂起来 多重继承 又更复杂一些 虚拟继承 又再更复杂一些 这些布幕后的主题 统可归类为所谓的 C++ object model(物件模型) 如果不知道这些底层机制 你就只能够把 make destructors virtual in base classes 或 never treat arrays polymorphically 这类规则硬背下来 却不明白它的道理 用一样东西 却不明白它的道理 林语堂如是说 不高明 只知道 how 不知道 why 困难度之二C++ 的第二个学习难度在于 paradigm shift (思考模式的移转) 别说自己设计classes 了 光使用别人的classes 就都是一种思考模式和行为模式的移转 MFC(或 OWL 或 VCL)programmer 必然能够领略并体会其中的意思 使用所谓的 application framework(一种大型的 凝聚性强的 有着物件导向公共基础建设的 class library) 你的码和 framework 之间究竟是怎样的关系呢?framework 提供的一大堆可改写的虚拟函式的意义与价值究竟在哪里呢?为什么 framework 所设计的种种美好性质以及各式各样的演算法竟然可以施行于我们自己设计的 class types 身上呢?framework 被设计时 也并不知道我们的存在 这正是物件导向中的多型(polymorphism)的威力 稍早所说的 C++ 物件模型 偏属程式设计的低层面 这里所说的思考模式移转 则是程式设计的高层面 能够把新思维模式的威力发挥得最淋漓尽致的 当推物件导向的 polymorphism(多型)和 generalization(泛型) 如果你没有使用这两项特性 等于入 C++ 宝山却空手而归 反复磨炼 循环震荡想像 C++ 是一把用来解决程式问题的刀 要它坚轫 要它锋利 就必须经过多次的回火 在高热和骤冷之间——炼 初学 C++ 语法(syntax)之后 你应该尽快尝试体验 polymorphism(大致而言也就是虚拟函式的运用) 等到对 OOP 的精神有了大局掌控的能力 但对 C++ 的许多小细节不甚清楚 就是回到C++ 物件模型 炼的时机 成长 是在高阶(polymorphism)和低阶(object model)之间反复震荡 才能够震荡到更高的位阶 而不是平平庸庸于中阶(C++ syntax)的一滩死水 cha138/Article/program/net/201311/12530

相关参考

知识大全 C++中运算符优先级的学习注解

C++中运算符优先级的学习注解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  提起运算符的优先级

知识大全 数据结构学习讲座(C++) 单链表(2)

数据结构学习讲座(C++)单链表(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!单链表()&n

知识大全 数据结构学习讲座(C++) 单链表(1)

数据结构学习讲座(C++)单链表(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!单链表()&n

知识大全 数据结构学习讲座(C++)双向链表

数据结构学习讲座(C++)双向链表  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!双向链表 

知识大全 c++对于学电气的学生以后的发展有多大的帮助,在考过二级后到底应该不应该继续学习

c++对于学电气的学生以后的发展有多大的帮助,在考过二级后到底应该不应该继续学习?求大神指点。可能一点用都没有,也可能一直要用。电气设计目前大多数人使用现成的CAD软件,一些特殊的东西也需要自己编程计

知识大全 厦门那里有培训C语言,或者是C++的,我是新手,我想去学校学习程式设计,知道的说下地址和联络方式吧

厦门那里有培训C语言,或者是C++的,我是新手,我想去学校学习程式设计,知道的说下地址和联络方式吧!  以下文字资料是由(全榜网网www.cha138.com)小编为大家

知识大全 历年哪个省市中考数学试题的难度最大?

历年哪个省市中考数学试题的难度最大?江苏省。他们自己的教材甚至涉及到基本微积分和微积分基本定理得运用。另一方面,江苏省的高考题没有选择题,且整体难度比较大。2012年哪个省的中考数学试题最难感觉江苏无

研究表明,最有利于激发学习动机的问题情境的难度在__左右

研究表明,最有利于激发学习动机的问题情境的难度在_____左右。A、50%B、60%C、70%D、80%答案:A解析:问题情境指的是具有一定难度,需要学生努力克服,而又是力所能及的学习情境。简单地说,

知识大全 高中毕业学计算机技术,专科的料,求学哪类好,及学习难度和就业工资

高中毕业学计算机技术,专科的料,求学哪类好,及学习难度和就业工资现在学计算机的人越来越多,就业压力比较大。别看什么软体大公司赚翻了,其实里面的员工压力都很大,技术更新太快,赚得钱又要拿来学新的东西。而

知识大全 高一新生对高中生活的 感想 开学两星期了。 800字。 尽量要对学习上那些课文的难度一些来写

高一新生对高中生活的感想开学两星期了。800字。尽量要对学习上那些课文的难度一些来写又是一个新学期了(一句被重复过无数次的话),没办法,一想到学习计划,我脑中浮现的就是“新学期”这三个字。经过了高一一