C++编程思想读后感由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c编程思想读后感”。
Unit One对象的演化
oop技术能够很容易地将大量问题归纳为一个简单的解,这一发现产生了大量的oop语言,其中最著名的是Smalltalk—C++之前最成功的oop语言。
继承表示了基本类型和派生类型之间的相似性,程序员创建一个基本类型以描述系统中一些对象的思想核心。由这个基本类型派生出其他类型,表达了认识该核心的不同途径。
早捆绑意味着编译器对特定的函数名产生调用,而连接器确定调用执行代码的绝对地址。对于。Oop采用动态绑定。当给对象发送消息时,在程序运行之前不去确定被调用的代码。编译器保证这个被调用的函数存在,并完成参数和返回值的类型检查,但是它不知道将执行的准确代码。为了实现晚捆绑,编译器在真正调用的地方插入一段特殊的二进制代码。通过使用存放在对象自身中的信息,这段代码在运行时计算被调用函数的地址。这样,每个对象就能根据一个指针的内容有不同的行为。当一个对象接收到消息时,它根据这个消息判断应当做什么。
程序员可以用关键字v i r t u a l表明他希望某个函数有晚捆绑的灵活性,而并不需要懂得v i r t u a l的使用机制。没有它,就不能用C + +做面向对象的程序设计。Vi r t u a l函数(虚函数)表示允许在相同家族中的类有不同的行为。这些不同是引起多态行为的原因。
用C 语言编写的过程程序就是一些数据定义和函数调用。要理解这种程序的含义,程序员必须掌握函数调用和函数实现的本身。这就是过程程序需要中间表示的原因。中间表示容易引起混淆,因为中间表示的表述是原始的,更偏向于计算机,而不偏向于所解决的问题。
通常,面向对象程序需要较少的代码,因为问题中的许多部分都可以用已存在的库代码。
C+ +成功的原因是经济上的:转变到O O P需要代价,而转变到C + +所花的代价较小。尽可能地为程序员提供最大便利。
为C + +堵塞了C语言中的一些漏洞,并提供更好的类型检查和编译时的分析。程序员必须先说明函数,使编译器能检查它们的使用情况。预处理器虚拟删除值替换和宏,这就减少了查找疵点的困难。C + +有一个性能,称为r e f e r e n c e s(引用),它允许对函数参数和返回值的地址进行更方便的处理。函数重载改进了对名字的处理,使程序员能对不同的函数使用相同的名字。另外,名字空间也加强了名字的控制。许多性能使C的更安全。面向对象的C + +程序的速度与用C写的程序速度相差在± 1 0 %之内,而且常常更接近。用O O P方法设计的程序可能比C的对应版本更有效。
c+ +的主要目标是让程序员能更容易地使用库,这是通过将库转换为新数据类型(类)来完成的。引入一个库,就是向该语言增加一个新类型。编译器负责这个库如何使用,保证适当的初始化和清除,保证函数被正确地调用。
• 模板的源代码重用
一些重要的类型要求修改源代码以便有效地重用。模板可以自动完成对代码的修改,因而是重用库代码特别有用的工具。用模板设计的类型很容易与其他类型一起工作。因为模板对程序员隐藏了这类代码重用的复杂性,所以特别好用。
C + +的异常处理(见第1 7章的内容)保证能检查到错误并进行处理。
C语言同样有这样的限制,例如当程序超过50 000行时,名字冲突就开始成为问题。简言之,程序员用光了函
数和变量名。设计C + +的目的是为了辅助大程序设计,也就是说,去掉小程序和大程序之间复杂性的分界。
程序设计有两个原则:
1)内部原则体现在程序自身的结构中,机灵而有见解的程序员可以通过程序设计语言的表达方式了解这种内部原则。
2)外部原则体现在程序的源信息中,一般被描述为“设计文档”(不要与产品文档混淆)。
过程语言:为科学工作者使用的F O RT R A N(F O R m u l a-T R A N s l a t i o n)和为商业者使用的C O B O L
(COmmon Busine-Oriented Language)。纯计算机科学中很成功的语言是L i s p(L i s t-P r o c e s s i n g),而面向数学的语言应当是A P L(A Programming L a n g u a g e)。
1.3.4 对象设计的五个阶段
1)对象发现这个阶段出现在程序的最初分析期间。可以通过寻找外部因素与界线、系统中的元素副本和最小概念单元而发现对象。如果已经有了一组类库,某些对象是很明显的。类之间的共同性(暗示了基类和继承类),可以立刻出现或在设计过程的后期出现。
2)对象装配我们在建立对象时会发现需要一些新成员,这些新成员在对象发现时期未出现过。对象的这种内部需要可能要用新类去支持它。
3)系统构造对对象的更多要求可能出现在以后阶段。随着不断的学习,我们会改进我们的对象。与系统中其它对象通讯和互相连接的需要,可能改变已有的类或要求新类。
4)系统扩充当我们向系统增添新的性能时,可能发现我们先前的设计不容易支持系统扩充。这时,我们可以重新构造部分系统,并很可能要增加新类。
5)对象重用这是对类的真正的重点测试。如果某些人试图在全新的情况下重用它,他们会发现一些缺点。当我们修改一个类以适应更新的程序时,类的一般原则将变得更清楚,直到我们有了一个真正可重用的对象。
对象开发原则
1)让特殊问题生成一个类,然后在解其他问题时让这个类生长和成熟。
2)记住,发现所需要的类,是设计系统的主要内容。如果已经有了那些类,这个项目就不困难了。
3)不要强迫自己在一开始就知道每一件事情,应当不断地学习。
4)开始编程,让一部分能够运行,这样就可以证明或反驳已生成的设计。不要害怕过程语言风格的细面条式的代码—类分割可以控制它们。坏的类不会破坏好的类。
5)尽量保持简单。具有明显用途的不太清楚的对象比很复杂的接口好。我们总能够从小的和简单的类开始,当我们对它有了较好地理解时再扩展这个类接口,但不可能简化已存在的类接口。
第2章数据抽象
库,简单地说就是一些人已经写的代码,按某种方式包装在一起。通常,最小的包是带有扩展名如L I B的文件和向编译器声明库中有什么的一个或多个头文件。连接器知道如何在L I B文件中搜索和提取相应的已编译的代码。但是,这只是提供库的一种方法。在跨越多种体系结构的平台上,例如U N I X,通常,提供库的最明智的方法是用源代码,这样在新的目标机上它能被重新编译。而在微软Wi n d o w s上,动态连接库是最明智的方法,这使得我们能够利用新发布的D D L经常修改我们的程序,我们的库函数销售商可能已经将新D D L发送给我们了。
2.1 声明与定义
“声明”向计算机介绍名字,它说,“这个名字是什么意思”。而“定义”为这个名字分配存储空间。无论涉及到变量时还是函数时含义都一样。无论在哪种情况下,编译器都在“定义”处分配存储空间。对于变量,编译器确定这个变量占多少存储单元,并在内存中产生存放它们的空间。对于函数,编译器产生代码,并为之分配存储空间。函数的存储空间中有一个由使用不带参数表或带地址操作符的函数名产生的指针。定义也可以是声明。如果该编译器还没有看到过名字A,程序员定义int A,则编译器马上为这个名字分配存储地址。声明常常使用于e x t e r n关键字。如果我们只是声明变量而不是定义它,则要求使用e x t e r n。对于函数声明,e x t e r n是可选的,不带函数体的函数名连同参数表或返回值,自动地作为一个声明。
C+ +要求必须写出函数原型(的全部信息),因为它增加了一个重要的安全层。
C++编程书评最近一段时间都在看c++编程,想让自己对计算机有更多的了解,和更好的运用,这也是对自我的一种知识面的一种提升。更多的可能还是出于自己对这方面的热爱吧。那我就把......
紧张忙碌的一周过去了,在这个星期里我们小组胜利地将我们选定的课题研究出来,我为我的小组骄傲,也为自己骄傲。我们的题目是银行定期存款管理系统,在编程过程中,我预订的任务是学......
C++多线程编程简单实例(2012-05-18 16:26:01)转载▼标签:itC++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲......
一个C/C++编程面试题(整理10篇)由网友“糊果果”投稿提供,下面是小编收集整理的一个C/C++编程面试题,仅供参考,希望能够帮助到大家。篇1:一个C/C++编程面试题 一个C/C++编程面试题......
C++ 面试题 - 专注于服务器编程、网络编程 C++ 面试题1.类成员指针Cla test{Public:Int fun(int) const;Int fun(int);Static int fun(int);Int iTemp;}1.1非静态成员函数指......