作者:empty 页数:436 出版社:empty |
本书此部分内容是C++学习指南。它讲解了C++语言的基础知识,引导读者从学习编写简单例程到开发独立的程序。将符号计算器这一程序作为贯穿全书的一个主要软件项目。让有经验的程序员乐于阅读。本指南直接讲解与C++有关的面向对象编程知识和语言特色,包括类、构造函数、引用等等。在多数情况下,我不仅要解释如何编程,而且还要告诫不要怎样编程。我尽量既让初学者对这部分指南感兴趣,又在讲授像C++一样的综合性语言过程中,列举一些反面例子很有必要。
宇宙中最重要的东西是什么?是物质吗?似乎任何事物都是由物质组成的——银河、恒程序的“空间一时间”用作用域(scope) 米描述。对象由它的作用城决定其生存和消亡,类定义、对象定义、构造的数、析构雨数、翁出流, include、main。下面的程序实现了以上功能,但同时,它也是C++编程的一个借喻。每个C++程序本身
你也许对数学中的函数比较了解,函数带有一个参数(或多个参数)并H返回一个值。不同的函数返回不同类型的值。正弦函数返回一个实数,但平方根可能返回一个复数(例函数的定义不仅要描述参数及返回值类型,而且还要包含计算此值的命令,这些命令总星、行尾、房子、汽车,甚至是我们程序员。俱如果没有能量,物质又将变成什么呢?没有能量,宇宙将消亡,能量是变化、运动和生命之源。另外,如果没有空间和时间,物质和能量又将变成什么?我们需要空间来存放物质,需要时间来观察物质的变化,编程就像创造宇宙样,我们需要物质:数据结构、对象以及变量。没有作用于对象上的代码,此对象将消亡。所以,我们需要能量,它是程序的生命力,它以可执行代码的形式表现出来。对象需要空间来存放,以便它们相互关联。最后,代码行需要时间来执行.可执行代码行在作用域内操作。作用域为程序提供结构,程序最终是由许许多多的结构组成。1.1全局作用域在讲授C时有一个老传统, 这就是问顺Kemi ghan和Ritchie的The C ProgrammingLanguage一书, 编写第一个打印间候语Hello Work d!的程序, 我们的C++程序也应该打印这一间候语。当然, 我们要创建“the World , 并让程序自己“说出”间候语,就是一个剧木,我们定义了剧本中的角色,并让它们交互作用。从某种意义上讲,此程序是“所有C++程序之母”它只包含一个演员,并让它经历创建和删除两个过程,程序在计算机屏幕上通过打印信息与我们交互。当它被创建时, 就在屏幕上打印Helo!:当它消失时, 就打印Goodbye!。那好, 下面我们就开始编写此程序。让我们先看看下面这个短小程序的代码清单,并逐行阅读对应的解释。
让我们从结尾即从man开始向前进行讲解。每个C++程序必须有一个main函数, 甚至对于这个特殊的程序, 即使它没有完成任何实质性的任务, 也应该包含一个main.一个正弦函数以某个角度为参数,返回根据此角度构成个三角形的两边长度的比值。例如,sin(n/4) 返回0.7071(或者更精确地说, 返回sq nt(2) /2) 。同样, 在C++中, 函数不带或带有多个参数并返回一个值.参数放在小括号中;如果函数不带参数,则小括号为空。在此例中, main不带参数。如, -1的平方根为i, i为虚数单位) , 在逻辑学上, 如果p为false, 则函数not(p) 返回布尔值true; 如果p为true, 则not(p) 返回布尔值false.在C++中, 函数的定义必须指定它的返回值类型。在后面, 我们将讨论不同的类型, 但现在, 你只要明白int是表示整数的内置类型之就行了。在C++中, 函数main必须总是返回int类型值。是用一对大括号(和) 括起来(大括号也称为花括号) 。对于此例, 在main() 后面的大括号中没有任何语句, 即不存在任何命令——在此程序中, main不完成任何任务。通常一个返回int值的函数总要给出一些如何计算此int值的命令(或者只是简单地将此值设置成任意数) .
目录
第一部分语言
第1章
对象和作用城…
1.1全局作用域……
12本地作用域…
1.3嵌入对象……
1.4继承(Inheritance)
1.5成员函数和接…
1.6成员函数作用域……
1.7类型…
2.2.3位逻辑运算符…
基于堆栈的计算器…
4.1.1谈谈实现…
谈谈C…
5.1.1设计规范…
5.1.2简短实现代码…
5.13扩展程序片断…
小结…
1.2练习…
抽象数据类型…
第2章数组和引用…
2.1引用…
2.运算符……
第3章指针……
3.1指针的不利之处…
3.2指针与引用……
3.3指针与数组……
3指针与动态内存分配…
3.5动态数据结构……
第4章
算术…
逻辑……
外部规范…
简短的实现…
实现…
练习…
谈谈汇编…
练习……
动态堆栈…
3.5.2链表……
35.3
字符串表…
3.5.4字符串缓冲器…
3.5表查找……
3.5.6
哈希表…
3.5.7测试程序…
3.58练习……
多态….
is-a的意义……
4.1开销…
解析树…
4.2.2练习….
第5章一个小型软件项目…
5.1开始一个软件项目…
5.2扫描器……
53符号表…
54存储……
主函数(main) .
聚集初始化…
5.10过程化编程…
5.11运算符重载…
5.12
按值传递…
5.13值语义….
第6章清理…
6.1输出解耦……
第二部分技术
与“防错性编程”作斗争…
完各性编程的一个实例…
补充…….
6.5改进类之间的通信…
6.6更正设计缺陷……
第7章隐藏实现细节…
7.1使用嵌入类……
72组合类…
7.3使用名字空间组合…
7.4在枚举中隐藏常量…
75在本地变量中隐藏常量…
第8章共享….
8.1分离全局程序参数…
8.2增强包容性……
8.3模板……
第9章去掉限制….
9.1动态数组…
动态Mult Node.
异常…
错误传播…
引用计数以及即写即复制…
13.1.1缓冲.
13.12批量分配·
13.1.3
数组new.
13.3.1调用输出.
9.1.2动态StringBuffer.
9.1.3动态SymbolTable.
9.1.4动态Store.
标准矢量……
第10章资源管理
10.2堆栈展开…
10.3资源….
10.4资源所有权…
10.5访问资源.
10.6智能指针…
10.7所有权转移:第一次尝试…
10.8所有权转移:第一次尝试·
10.9安全容器….
10.10迭代器…
10.12转换到资源管理…
10.13结论…….
第11章使用标准模板库.
11.2结束限制……
11.3去掉C-字符串…
11.4探讨流……
第12章持久性.
12.1Caic ulator对象…
12.2命令解析器………
12.3中行化与反串行化.
1.4内存中的串行化及反串行化…
12.5多重继承……
第13章重载运算符new.
13.1特定类new.
13.2全局new.
13.3跟踪内存泄漏.
C++实践之路
13.3.2
13.4结论…
第14章
第15章
15.1
15.2
第16章
方位new
库.
编程范例.
Hello Windows…
封装……
通过C++控制Windows.
模型-视图-控制器…
16.1.1控制器.
16.1.2客户代码…
异常定义.
应用程序图标…
17.2窗绘图和视图对象…
一个Widows应用程序……
23.2.2特殊Windows依赖性…
第三部分
第四部分
Windows
知识扩展
附录
16.3清理…
第17章绘图….
17.1
17.3画布….
17.4WM_PAINT消息…
17.5模型…
17.6捕获鼠标…
第18章
177添加颜色和修饰.…18.1
18.2用户界面….
18.3
18.4 Windows控件…
19.1复杂性…
把计算器移植到Windows环境下
子窗…….
18.4.1静态文本·
18.4.2编辑控件…
18.4.窗子类…
18.4.4插入计算器
18.4.5列表框控件.
18.4.6模块-视图反馈环.
18.5
命令和菜单…
18.6
动态菜单…
18.7
对话框…
第19章关于软件….
19.2软件的分形本质…
19.项目的灵活性……
19.4程序员的灵活性…
第20章设计策略.
20.1自项向下的面向对象设计…
20.2用户界面.
20.3需求规范…
20.4体系结构规范…
第21章团队工作…
21.1生产效率…
21.2团队策略…
第22章实现