下载频道  >  a1dsx的资源
  • 数据结构-清华大学严蔚敏PPT

    数据结构-清华大学严蔚敏,不错的资料书,大家可以看看

    2012-07-31
    3
  • C++程序设计原理与实践.pdf

    Amazon评论: “这本书非常好,首先它以简单、易懂的方式阐述了C++原理和实践.而且强调养成良好的编程习惯,注意编程细节,C++编程人员都应该人手一册,常读常新。” “作为C++语言的发明人,作者站在专业程序员的角度讲述如何为现实世界中的计算问题设计有效的解决方案。尽管本书采用的是C++语言,但其中涵盖的程序设计思想同样适用于其他语言,而且这些颇具实践意义的编程思想还可以弥补高校程序设计课程偏重语法细节,忽视总体思想方法和整体过程实现的问题,使读者充分认识到程序设计是一种解决问题的方法和能力,最终是对程序设计语言的应用,这也是本书的价值所在。” “这本书是学习程序设计的最佳选择.无论是课堂学习还是自学,本书独具深度的思想、缜密的思路、开阔的视野及专业的讲解都会使你获益匪浅。” “这本书与作者另一本享有盛誉的著作——《C++程序设计语言(特别版)》相辅相成……” 内容简介 本书是经典程序设计思想与C++开发实践的完美结合,是C++之父回归校园后对C++编程原理和技巧的全新阐述。书中全面地介绍了程序设计基本原理,包括基本概念、设计和编程技术、语言特性以及标准库等,教你学会如何编写具有输入、输出、计算以及简单图形显示等功能的程序。此外,本书通过对C++思想和历史的讨论、对经典实例(如矩阵运算、文本处理、测试以及嵌入式系统程序设计)的展示,以及对C语言的简单描述,为你呈现了一幅程序设计的全景图。 ·C++初学者的权威指南。无论你是从事软件开发还是其他领域的工作,本书将为你打开程序开发之门。 ·中高级程序员的必备参考。通过观察程序设计大师如何处理编程中的各种问题,使你获得新的领悟和指引。 ·全面阐释C++基本概念和技术。与传统的C++教材相比,本书对基本概念和技术的介绍更为深入,为你编写实用、正确、易维护和有效的代码打下坚实的基础。 ·强调现代C++编程风格。本书从开篇就介绍现代C++程序设计技术,并揭示了大量关于如何使用C++标准库来简化程序设计的原理,使你快速掌握实用编成技巧。 ·配套教辅资源丰富。本书网站(www.stroustrup.com/Programming)提供了丰富的辅助资料,包括实例源码、PPT、勘误等。 作者简介 Bjarne Stroustrup 英国剑桥大学计算机科学博士,C++的设计者和最初的实现者。他现在是德州农工大学计算机科学首席教授。1993年,由于在C++领域的重大贡献,他获得了ACM的 Grace Murray Hopper大奖并成为ACM院士。在进入学术界之前,他在AT&T贝尔实验室工作,是ISO C++标准委员会的创始人之一。

    2012-07-31
    14
  • C++编程思想 PDF

    目 录 译者序 前言 第1章 对象的演化 1 1.1 基本概念 1 1.1.1 对象:特性+行为 1 1.1.2 继承:类型关系 1 1.1.3 多态性 2 1.1.4 操作概念:OOP程序像什么 3 1.2 为什么C++会成功 3 1.2.1 较好的C 3 1.2.2 采用渐进的学习方式 4 1.2.3 运行效率 4 1.2.4 系统更容易表达和理解 4 1.2.5 “库”使你事半功倍 4 1.2.6 错误处理 5 1.2.7 大程序设计 5 1.3 方法学介绍 5 1.3.1 复杂性 5 1.3.2 内部原则 6 1.3.3 外部原则 7 1.3.4 对象设计的五个阶段 9 1.3.5 方法承诺什么 10 1.3.6 方法应当提供什么 10 1.4 起草:最小的方法 12 1.4.1 前提 13 1.4.2 高概念 14 1.4.3 论述(treatment) 14 1.4.4 结构化 14 1.4.5 开发 16 1.4.6 重写 17 1.4.7 逻辑 17 1.5 其他方法 17 1.5.1 Booch 18 1.5.2 责任驱动的设计(RDD) 19 1.5.3 对象建模技术(OMT) 19 1.6 为向OOP转变而采取的策略 19 1.6.1 逐步进入OOP 19 1.6.2 管理障碍 20 1.7 小结 21 第2章 数据抽象 22 2.1 声明与定义 22 2.2 一个袖珍C库 23 2.3 放在一起:项目创建工具 29 2.4 什么是非正常 29 2.5 基本对象 30 2.6 什么是对象 34 2.7 抽象数据类型 35 2.8 对象细节 35 2.9 头文件形式 36 2.10 嵌套结构 37 2.11 小结 41 2.12 练习 41 第3章 隐藏实现 42 3.1 设置限制 42 3.2 C++的存取控制 42 3.3 友元 44 3.3.1 嵌套友元 45 3.3.2 它是纯的吗 48 3.4 对象布局 48 3.5 类 48 3.5.1 用存取控制来修改stash 50 3.5.2 用存取控制来修改stack 51 3.6 句柄类(handle classes) 51 3.6.1 可见的实现部分 51 3.6.2 减少重复编译 52 3.7 小结 54 3.8 练习 54 第4章 初始化与清除 55 4.1 用构造函数确保初始化 55 4.2 用析构函数确保清除 56 4.3 清除定义块 58 4.3.1 for循环 59 4.3.2 空间分配 60 4.4 含有构造函数和析构函数的stash 61 4.5 含有构造函数和析构函数的stack 63 4.6 集合初始化 65 4.7 缺省构造函数 67 4.8 小结 68 4.9 练习 68 第5章 函数重载与缺省参数 69 5.1 范围分解 69 5.1.1 用返回值重载 70 5.1.2 安全类型连接 70 5.2 重载的例子 71 5.3 缺省参数 74 5.4 小结 81 5.5 练习 82 第6章 输入输出流介绍 83 6.1 为什么要用输入输出流 83 6.2 解决输入输出流问题 86 6.2.1 预先了解操作符重载 86 6.2.2 插入符与提取符 87 6.2.3 通常用法 88 6.2.4 面向行的输入 90 6.3 文件输入输出流 91 6.4 输入输出流缓冲 93 6.5 在输入输出流中查找 94 6.6 strstreams 96 6.6.1 为用户分配的存储 96 6.6.2 自动存储分配 98 6.7 输出流格式化 100 6.7.1 内部格式化数据 101 6.7.2 例子 102 6.8 格式化操纵算子 106 6.9 建立操纵算子 108 6.10 输入输出流实例 111 6.10.1 代码生成 111 6.10.2 一个简单的数据记录 117 6.11 小结 123 6.12 练习 123 第7章 常量 124 7.1 值替代 124 7.1.1 头文件里的const 124 7.1.2 const的安全性 125 7.1.3 集合 126 7.1.4 与C语言的区别 126 7.2 指针 127 7.2.1 指向const的指针 127 7.2.2 const指针 127 7.2.3 赋值和类型检查 128 7.3 函数参数和返回值 128 7.3.1 传递const值 128 7.3.2 返回const值 129 7.3.3 传递和返回地址 131 7.4 类 133 7.4.1 类里的const和enum 133 7.4.2 编译期间类里的常量 134 7.4.3 const对象和成员函数 136 7.4.4 只读存储能力 139 7.5 可变的(volatile) 140 7.6 小结 141 7.7 练习 141 第8章 内联函数 142 8.1 预处理器的缺陷 142 8.2 内联函数 144 8.2.1 类内部的内联函数 145 8.2.2 存取函数 146 8.3 内联函数和编译器 150 8.3.1 局限性 150 8.3.2 赋值顺序 150 8.3.3 在构造函数和析构函数里隐藏行为 151 8.4 减少混乱 152 8.5 预处理器的特点 153 8.6 改进的错误检查 154 8.7 小结 155 8.8 练习 155 第9章 命名控制 157 9.1 来自C语言中的静态成员 157 9.1.1 函数内部的静态变量 157 9.1.2 控制连接 160 9.1.3 其他的存储类型指定符 161 9.2 名字空间 161 9.2.1 产生一个名字空间 162 9.2.2 使用名字空间 163 9.3 C++中的静态成员 166 9.3.1 定义静态数据成员的存储 166 9.3.2 嵌套类和局部类 168 9.3.3 静态成员函数 169 9.4 静态初始化的依赖因素 171 9.5 转换连接指定 174 9.6 小结 174 9.7 练习 174 第10章 引用和拷贝构造函数 176 10.1 C++中的指针 176 10.2 C++中的引用 176 10.2.1 函数中的引用 177 10.2.2 参数传递准则 178 10.3 拷贝构造函数 179 10.3.1 传值方式传递和返回 179 10.3.2 拷贝构造函数 182 10.3.3 缺省拷贝构造函数 187 10.3.4 拷贝构造函数方法的选择 188 10.4 指向成员的指针

    2012-07-31
    10
  • C++编程思想(第2版)_第2卷_实用编程技术

    本书介绍C++实用的编程技术和最佳的实践方法,深入探究了异常处理方法和异常安全设计;介绍C++的字符串、输入输出流、STL算法、容器和模板的现代用法,包括模板元编程;解释多重继承问题的难点,展示RTTI的实际使用,描述了典型的设计模式及其实现,特别介绍被认为是标准C++下一版特征之一的多线程处理编程技术,并提供了最新的研究成果。本书适合作为高等院校计算机及相关专业的本科生、研究生的教材,也可供从事软件开发的研究人员和科技工作者参考。 出版者的话 专家指导委员会 译者序 前言 第一部分 建立稳定的系统 第1章 异常处理 1.1 传统的错误处理 1.2 抛出异常 1.3 捕获异常 1.3.1 try块 1.3.2 异常处理器 1.3.3 终止和恢复 1.4 异常匹配 1.4.1 捕获所有异常 1.4.2 重新抛出异常 1.4.3 不捕获异常 1.5 清理 1.5.1 资源管理 1.5.2 使所有事物都成为对象 1.5.3 auto_ptr 1.5.4 函数级的try块 1.6 标准异常 1.7 异常规格说明 1.7.1 更好的异常规格说明 1.7.2 异常规格说明和继承 1.7.3 什么时候不使用异常规格说明 1.8 异常安全 1.9 在编程中使用异常 1.9.1 什么时候避免异常 1.9.2 异常的典型应用 1.10 使用异常造成的开销 1.11 小结 1.12 练习 第2章 防御性编程 2.1 断言 2.2 一个简单的单元测试框架 2.2.1 自动测试 2.2.2 TestSuite框架 2.2.3 测试套件 2.2.4 测试框架的源代码 2.3 调试技术 2.3.1 用于代码跟踪的宏 2.3.2 跟踪文件 2.3.3 发现内存泄漏 2.4 小结 2.5 练习 第二部分 标准C++库 第3章 深入理解字符串 3.1 字符串的内部是什么 3.2 创建并初始化C++字符串 3.3 对字符串进行操作 3.3.1 追加、插入和连接字符串 3.3.2 替换字符串中的字符 3.3.3 使用非成员重载运算符连接 3.4 字符串的查找 3.4.1 反向查找 3.4.2 查找一组字符第1次或最后一次出现的位置 3.4.3 从字符串中删除字符 3.4.4 字符串的比较 3.4.5 字符串和字符的特性 3.5 字符串的应用 3.6 小结 3.7 练习 第4章 输入输出流 4.1 为什么引入输入输出流 4.2 救助输入输出流 4.2.1 插入符和提取符 4.2.2 通常用法 4.2.3 按行输入 4.3 处理流错误 4.4 文件输入输出流 4.4.1 一个文件处理的例子 4.4.2 打开模式 4.5 输入输出流缓冲 4.6 在输入输出流中定位 4.7 字符串输入输出流 4.7.1 输入字符串流 4.7.2 输出字符串流 4.8 输出流的格式化 4.8.1 格式化标志 4.8.2 格式化域 4.8.3 宽度、填充和精度设置 4.8.4 一个完整的例子 4.9 操纵算子 4.9.1 带参数的操纵算子 4.9.2 创建操纵算子 4.9.3 效用算子 4.10 输入输出流程序举例 4.10.1 维护类库的源代码 4.10.2 检测编译器错误 4.10.3 一个简单的数据记录器 4.11 国际化 4.11.1 宽字符流 4.11.2 区域性字符流 4.12 小结 4.13 练习 第5章 深入理解模板 第6章 通用算法 第7章 通用容器 第三部分 专题 第8章 运行时类型识别 第9章 多重继承 第10章 设计模式 第11章 并发 附录 附录A 推荐读物 附录B 其他 索引

    2012-07-31
    10
  • C++编程思想(第2版)_第1卷_标准C++引导

    第1章 对象导言 1 1.1 抽象的过程 1 1.2 对象有一个接口 2 1.3 实现的隐藏 4 1.4 实现的重用 5 1.5 继承:重用接口 5 1.5.1 is-a 关系和is-like-a 关系 8 1.6 具有多态性的可互换对象 8 1.7 创建和销毁对象 11 1.8 异常处理:应对错误 12 1.9 分析和设计 12 1.9.1 第0阶段:制定计划 14 1.9.1.1 任务陈述 14 1.9.2 第1阶段:我们在做什么 14 1.9.3 第2阶段:我们将如何建立对象 16 1.9.3.1 对象设计的五个阶段 17 1.9.3.2 对象开发准则 18 1.9.4 第3阶段:创建核心 18 1.9.5 第4阶段:迭代用例 19 1.9.6 第5阶段:进化 19 .1.9.7 计划的回报 20 1.10 极限编程 20 1.10.1 先写测试 21 1.10.2 结对编程 22 1.11 为什么c++会成功 22 1.11.1 一个较好的c 22 1.11.2 延续式的学习过程 23 1.11.3 效率 23 1.11.4 系统更容易表达和理解 23 1.11.5 尽量使用库 23 1.11.6 利用模板的源代码重用 24 1.11.7 错误处理 24 1.11.8 大型程序设计 24 1.12 为向oop转变而采取的策略 24 1.12.1 指导方针 25 1.12.1.1 训练 25 1.12.1.2 低风险项目 25 1.12.1.3 来自成功的模型 25 1.12.1.4 使用已有的类库 25 1.12.1.5 不要用c++重写已有的代码 25 1.12.2 管理的障碍 25 1.12.2.1 启动的代价 26 1.12.2.2 性能问题 26 1.12.2.3 常见的设计错误 26 1.13 小结 27 第2章 对象的创建与使用 28 2.1 语言的翻译过程 28 2.1.1 解释器 28 2.1.2 编译器 29 2.1.3 编译过程 29 2.1.3.1 静态类型检查 30 2.2 分段编译工具 30 2.2.1 声明与定义 30 2.2.1.1 函数声明的语法 31 2.2.1.2 一点说明 31 2.2.1.3 函数的定义 31 2.2.1.4 变量声明的语法 32 2.2.1.5 包含头文件 33 2.2.1.6 标准c++ include 语句格式 33 2.2.2 连接 34 2.2.3 使用库文件 34 2.2.3.1 连接器如何查找库 34 2.2.3.2 秘密的附加模块 35 2.2.3.3 使用简单的c语言库 35 2.3 编写第一个c++程序 35 2.3.1 使用iostream类 35 2.3.2 名字空间 36 2.3.3 程序的基本结构 37 2.3.4 “hello, world!” 37 2.3.5 运行编译器 38 2.4 关于输入输出流 38 2.4.1 字符数组的拼接 39 2.4.2 读取输入数据 39 2.4.3 调用其他程序 40 2.5 字符串简介 40 2.6 文件的读写 41 2.7 vector简介 42 2.8 小结 45 2.9 练习 46 第3章 c++中的c 47 3.1 创建函数 47 3.1.1 函数的返回值 48 3.1.2 使用c的函数库 49 3.1.3 通过库管理器创建自己的库 49 3.2 执行控制语句 50 3.2.1 真和假 50 3.2.2 if-else语句 50 3.2.3 while语句 51 3.2.4 do-while语句 51 3.2.5 for语句 52 3.2.6 关键字break 和 continue 53 3.2.7 switch语句 54 3.2.8 使用和滥用goto 55 3.2.9 递归 55 3.3 运算符简介 56 3.3.1 优先级 56 3.3.2 自增和自减 57 3.4 数据类型简介 57 3.4.1 基本内部类型 57 3.4.2 bool类型与true和false 58 3.4.3 说明符 59 3.4.4 指针简介 60 3.4.5 修改外部对象 62 3.4.6 c++引用简介 64 3.4.7 用指针和引用作为修饰符 65 3.5 作用域 66 3.5.1 实时定义变量 67 3.6 指定存储空间分配 68 3.6.1 全局变量 68 3.6.2 局部变量 69 3.6.2.1 寄存器变量 69 3.6.3 静态变量 70 3.6.4 外部变量 71 3.6.4.1 连接 71 3.6.5 常量 72 3.6.5.1 常量值 72 3.6.6 volatile变量 73 3.7 运算符及其使用 73 3.7.1 赋值 73 3.7.2 数学运算符 73 3.7.2.1 预处理宏介绍 74 3.7.3 关系运算符 75 3.7.4 逻辑运算符 75 3.7.5 位运算符 75 3.7.6 移位运算符 76 3.7.7 一元运算符 78 3.7.8 三元运算符 78 3.7.9 逗号运算符 79 3.7.10 使用运算符时的常见问题 79 3.7.11 转换运算符 80 3.7.12 c++的显式转换 80 3.7.12.1 静态转换(static_cast) 81 3.7.12.2 常量转换(const_cast) 82 3.7.12.3 重解释转换(reinterpret_cast) 82 3.7.13 sizeof—独立运算符 83 3.7.14 asm 关键字 84 3.7.15 显式运算符 84 3.8 创建复合类型 84 3.8.1 用typedef命名别名 85 3.8.2 用struct把变量结合在一起 85 3.8.2.1 指针和struct 87 3.8.3 用enum提高程度清晰度 87 3.8.3.1 枚举类型检查 88 3.8.4 用union节省内存 88 3.8.5 数组 89 3.8.5.1 指针和数组 91 3.8.5.2 探究浮点格式 93 3.8.5.3 指针算术 94 3.9 调试技巧 96 3.9.1 调试标记 96 3.9.1.1 预处理器调试标记 97 3.9.1.2 运行期调试标记 97 3.9.2 把变量和表达式转换成字符串 98 3.9.3 c语言assert( )宏 98 3.10 函数地址 99 3.10.1 定义函数指针 99 3.10.2 复杂的声明和定义 99 3.10.3 使用函数指针 100 3.10.4 指向函数的指针数组 101 3.11 make:管理分段编译 101 3.11.1 make的行为 102 3.11.1.1 宏 102 3.11.1.2 后缀规则 103 3.11.1.3 默认目标 103 3.11.2 本书中的makefile 104 3.11.3 makefile的一个例子 104 3.12 小结 106 3.13 练习 106 第4章 数据抽象 109 4.1 一个袖珍c库 109 4.1.1 动态存储分配 112 4.1.2 有害的猜测 114 4.2 哪儿出问题 115 4.3 基本对象 116 4.4 什么是对象 120 4.5 抽象数据类型 121 4.6 对象细节 121 4.7 头文件形式 122 4.7.1 头文件的重要性 122 4.7.2 多次声明问题 123 4.7.3 预处理器指示#define、#ifdef 和#endif 124 4.7.4 头文件的标准 124 4.7.5 头文件中的名字空间 125 4.7.6 在项目中使用头文件 125 4.8 嵌套结构 126 4.8.1 全局作用域解析 128 4.9 小结 129 4.10 练习 129 第5章 隐藏实现 132 5.1 设置限制 132 5.2 c++的访问控制 132 5.2.1 protected说明符 134 5.3 友元 134 5.3.1 嵌套友元 136 5.3.2 它是纯面向对象的吗 138 5.4 对象布局 138 5.5 类 139 5.5.1 用访问控制来修改stash 141 5.5.2 用访问控制来修改stack 141 5.6 句柄类 142 5.6.1 隐藏实现 142 5.6.2 减少重复编译 142 5.7 小结 144 5.8 练习 144 第6章 初始化与清除 146 6.1 用构造函数确保初始化 146 6.2 用析构函数确保清除 147 6.3 清除定义块 149 6.3.1 for循环 150 6.3.2 内存分配 151 6.4 带有构造函数和析构函数的stash 152 6.5 带有构造函数和析构函数的stack 154 6.6 集合初始化 156 6.7 默认构造函数 158 6.8 小结 159 6.9 练习 159 第7章 函数重载与默认参数 161 7.1 名字修饰 162 7.1.1 用返回值重载 162 7.1.2 类型安全连接 162 7.2 重载的例子 163 7.3 联合 166 7.4 默认参数 168 7.4.1 占位符参数 169 7.5 选择重载还是默认参数 170 7.6 小结 173 7.7 练习 173 第8章 常量 175 8.1 值替代 175 8.1.1 头文件里的const 176 8.1.2 const的安全性 176 8.1.3 集合 177 8.1.4 与c语言的区别 177 8.2 指针 178 8.2.1 指向const的指针 179 8.2.2 const指针 179 8.2.2.1 格式 180 8.2.3 赋值和类型检查 180 8.2.3.1 字符数组的字面值 180 8.3 函数参数和返回值 181 8.3.1 传递const值 181 8.3.2 返回const值 181 8.3.2.1 临时量 183 8.3.3 传递和返回地址 183 8.3.3.1 标准参数传递 185 8.4 类 185 8.4.1 类里的const 186 8.4.1.1 构造函数初始化列表 186 8.4.1.2 内部类型的“构造函数” 187 8.4.2 编译期间类里的常量 188 8.4.2.1 旧代码中的“enum hack” 189 8.4.3 const对象和成员函数 190 8.4.3.1 可变的:按位const和按逻 辑const 192 8.4.3.2 只读存储能力 193 8.5 volatile 194 8.6 小结 195 8.7 练习 195 第9章 内联函数 197 9.1 预处理器的缺陷 197 9.1.1 宏和访问 199 9.2 内联函数 200 9.2.1 类内部的内联函数 200 9.2.2 访问函数 201 9.2.2.1 访问器和修改器 202 9.3 带内联函数的stash和stack 205 9.4 内联函数和编译器 208 9.4.1 限制 209 9.4.2 向前引用 209 9.4.3 在构造函数和析构函数里隐藏行为 210 9.5 减少混乱 210 9.6 预处理器的更多特征 211 9.6.1 标志粘贴 212 9.7 改进的错误检查 212 9.8 小结 215 9.9 练习 215 第10章 名字控制 217 10.1 来自c语言中的静态元素 217 10.1.1 函数内部的静态变量 217 10.1.1.1 函数内部的静态对象 218 10.1.1.2 静态对象的析构函数 219 10.1.2 控制连接 220 10.1.2.1 冲突问题 221 10.1.3 其他存储类型说明符 222 10.2 名字空间 222 10.2.1 创建一个名字空间 222 10.2.1.1 未命名的名字空间 223 10.2.1.2 友元 224 10.2.2 使用名字空间 224 10.2.2.1 作用域解析 224 10.2.2.2 使用指令 225 10.2.2.3 使用声明 226 10.2.3 名字空间的使用 227 10.3 c++中的静态成员 228 10.3.1 定义静态数据成员的存储 228 10.3.1.1 静态数组的初始化 229 10.3.2 嵌套类和局部类 231 10.3.3 静态成员函数 232 10.4 静态初始化的相依性 234 10.4.1 怎么办 235 10.4.1.1 技术一 235 10.4.1.2 技术二 237 10.5 替代连接说明 240 10.6 小结 240 10.7 练习 241 第11章 引用和拷贝构造函数 244 11.1 c++中的指针 244 11.2 c++中的引用 244 11.2.1 函数中的引用 245 11.2.1.1 常量引用 246 11.2.1.2 指针引用 246 11.2.2 参数传递准则 247 11.3 拷贝构造函数 247 11.3.1 按值传递和返回 247 11.3.1.1 传递和返回大对象 248 11.3.1.2 函数调用栈框架 248 11.3.1.3 重入 249 11.3.1.4 位拷贝与初始化 249 11.3.2 拷贝构造函数 251 11.3.2.1 临时对象 254 11.3.3 默认拷贝构造函数 255 11.3.4 替代拷贝构造函数的方法 256 11.3.4.1 防止按值传递 257 11.3.4.2 改变外部对象的函数 257 11.4 指向成员的指针 257 11.4.1 函数 259 11.4.1.1 一个例子 259 11.5 小结 261 11.6 练习 261 第12章 运算符重载 264 12.1 两个极端 264 12.2 语法 264 12.3 可重载的运算符 265 12.3.1 一元运算符 266 12.3.1.1 自增和自减 269 12.3.2 二元运算符 269 12.3.3 参数和返回值 278 12.3.3.1 作为常量通过传值方式返回 279 12.3.3.2 返回值优化 279 12.3.4 不常用的运算符 280 12.3.4.1 operator, 280 12.3.4.2 operator-] 280 12.3.4.3 嵌入的迭代器 282 12.3.4.4 operator-]* 284 12.3.5 不能重载的运算符 285 12.4 非成员运算符 286 12.4.1 基本方针 287 12.5 重载赋值符 287 12.5.1 operator=的行为 288 12.5.1.1 类中指针 289 12.5.1.2 引用计数 291 12.5.1.3 自动创建operator= 295 12.6 自动类型转换 296 12.6.1 构造函数转换 296 12.6.1.1 阻止构造函数转换 297 12.6.2 运算符转换 297 12.6.2.1 反身性 298 12.6.3 类型转换例子 299 12.6.4 自动类型转换的缺陷 300 12.6.4.1 隐藏的行为 301 12.7 小结 302 12.8 练习 302 第13章 动态对象创建 305 13.1 对象创建 305 13.1.1 c从堆中获取存储单元的方法 306 13.1.2 operator new 307 13.1.3 operator delete 307 13.1.4 一个简单的例子 308 13.1.5 内存管理的开销 308 13.2 重新设计前面的例子 309 13.2.1 使用delete void*可能会出错 309 13.2.2 对指针的清除责任 310 13.2.3 指针的stash 310 13.2.3.1 一个测试程序 312 13.3 用于数组的new和delete 314 13.3.1 使指针更像数组 315 13.4 耗尽内存 315 13.5 重载new和delete 316 13.5.1 重载全局new和delete 317 13.5.2 对于一个类重载new和delete 318 13.5.3 为数组重载new和delete 320 13.5.4 构造函数调用 322 13.5.5 定位new和delete 323 13.6 小结 324 13.7 练习 324 第14章 继承和组合 326 14.1 组合语法 326 14.2 继承语法 327 14.3 构造函数的初始化表达式表 329 14.3.1 成员对象初始化 329 14.3.2 在初始化表达式表中的内部类型 329 14.4 组合和继承的联合 330 14.4.1 构造函数和析构函数调用的次序 331 14.5 名字隐藏 333 14.6 非自动继承的函数 336 14.6.1 继承和静态成员函数 339 14.7 组合与继承的选择 339 14.7.1 子类型设置 340 14.7.2 私有继承 342 14.7.2.1 对私有继承成员公有化 342 14.8 protected 343 14.8.1 protected继承 343 14.9 运算符的重载与继承 343 14.10 多重继承 345 14.11 渐增式开发 345 14.12 向上类型转换 346 14.12.1 为什么要“向上类型转换” 347 14.12.2 向上类型转换和拷贝构造函数 347 14.12.3 组合与继承(再论) 349 14.12.4 指针和引用的向上类型转换 350 14.12.5 危机 350 14.13 小结 351 14.14 练习 351 第15章 多态性和虚函数 354 15.1 c++程序员的演变 354 15.2 向上类型转换 355 15.3 问题 356 15.3.1 函数调用捆绑 356 15.4 虚函数 356 15.4.1 扩展性 357 15.5 c++如何实现晚捆绑 359 15.5.1 存放类型信息 360 15.5.2 虚函数功能图示 361 15.5.3 撩开面纱 362 15.5.4 安装vpointer 363 15.5.5 对象是不同的 363 15.6 为什么需要虚函数 364 15.7 抽象基类和纯虚函数 365 15.7.1 纯虚定义 368 15.8 继承和vtable 368 15.8.1 对象切片 370 15.9 重载和重新定义 372 15.9.1 变量返回类型 373 15.10 虚函数和构造函数 375 15.10.1 构造函数调用次序 375 15.10.2 虚函数在构造函数中的行为 376 15.11 析构函数和虚拟析构函数 376 15.11.1 纯虚析构函数 378 15.11.2 析构函数中的虚机制 379 15.11.3 创建基于对象的继承 380 15.12 运算符重载 382 15.13 向下类型转换 384 15.14 小结 386 15.15 练习 387 第16章 模板介绍 390 16.1 容器 390 16.1.1 容器的需求 391 16.2 模板综述 392 16.2.1 模板方法 393 16.3 模板语法 394 16.3.1 非内联函数定义 395 16.3.1.1 头文件 396 16.3.2 作为模板的intstack 396 16.3.3 模板中的常量 398 16.4 作为模板的stash和stack 399 16.4.1 模板化的指针stash 401 16.5 打开和关闭所有权 405 16.6 以值存放对象 407 16.7 迭代器简介 408 16.7.1 带有迭代器的栈 415 16.7.2 带有迭代器的pstash 417 16.8 为什么使用迭代器 422 16.8.1 函数模板 424 16.9 小结 425 16.10 练习 425 附录a 编码风格 428 a.1 常规 428 a.2 文件名 428 a.3 开始和结束注释标记 429 a.4 圆括号、大括号和缩排 429 a.5 标识符名 432 a.6 头文件的包含顺序 432 a.7 在头文件上包含警卫 432 a.8 使用名字空间 433 a.9 require( )和assure( )的使用 433 附录b 编程准则 434 附录c 推荐读物 441 c.1 c 441 c.2 基本c++ 441 c.2.1 我自己的书 441 c.3 深入研究和死角分析 442 c.4 分析和设计 443 索引 445

    2012-07-31
    13
  • Microsoft C# Windows程序设计(上下册) PDF扫描完整版

    北京大学出版社 Petzold编著的书籍一直是Windows开发的权威。在这本关于.NET的Windows编程指导中,这位畅销书作者向您展示了如何充分利用Windows Porms这个下一代的Windows编程类库。您将了解如何使用C#为Windows应用程序创建动态的用户界面和图形输出。本书使用了大量以C#编写的客户应用程序示例来展示常用技术,并且在最佳编程实践方面给出了大量的实际建议。有了这本书,您很快就会成为C#编程的顶尖高手!

    2012-07-31
    50
  • C#高级编程 PDF扫描版

    本书为C#经典名著!是Wrox红皮书中最畅销的品种之一。从第1版开始就名满天下,其第3版被评选为2005年最权威的十大IT图书之一,并荣获“2005年度引进版科技类优秀图书”奖。更可贺的是,其第4版又荣获“2006年最受读者喜爱的十大技术开发类图书”!第6版在详尽论述C# 2005的基础上,又增加了.NET 3.0 Framework的新特性,更加完善了C#的技术。是缺乏C#或.NET编程经验,但有其他语言编程经验的开发人员,以及了解.NET 2.0,而且对.NET 3.0和Visual Studio 2005有兴趣的程序员全面掌握C#的...

    2012-07-31
    10
  • C#程序员参考手册

    在微软为.NET Framework推出的各种语言中,综合了Visual Basic的高效性和C/C++的强大功能的C#己成为最受青睐的语言。其现代、简单、完全面向对象和类型安全的特性使它成为下一代的分布式应用程序的主流开发语言。   本书对C#的主要功能和核心类库提供了一个快速的参考。本书讲述了各种C#概念和特性,如类型系统、运算符、局部变量、数组、类、结构、枚举、字段、方法、属性、委托、事件、属性标志、系统类、集合、反射和正则表达式等。全书章节段落结构清楚,内容简明,切中要点,反映了作者多年的编程经验。   本书适合于需要C#语言和.NET Framework类库的快速参考的程序员和希望通过代码示例学习编程的程序员阅读。

    2012-07-31
    10
  • C#windows编程 PDF扫描版

    C#windows编程相关的工具书,人民出版社

    2012-07-31
    10
  • C#与.NET.3.5高级程序设计(第4版)PDF扫描版

    本资料仅供个人学习参考,请勿用于商业用途,如有能力请尽量购买正版图书,也是对作者的支持。 高清PDF中文完整版, 被称为“C#圣经”的权威著作.    Amazon超级畅销书   全面涵盖C# 3.0,用IL深入揭示各语言特性..   深度剖析.NET 3.5平台,让你知其然,更知其所以然   国内多位微软MVP联手翻译... 本书提供作译者介绍   Andrew Troelsen世界级c#专家,微软VisuaI C#MVP。他是著名的微软技术咨询企业Intertech的合伙人和副总裁,该公司的客户包括微软、霍尼韦尔、美国宇航局等。他曾为MSDN网站和MacTech网站撰写了有关各种操作系统平台上.NET技术的文章,并经常在业界主要技术会议上发表f演讲和开设技术讲座。除本书外,他还撰写了COM and Net interoperabity和Visual Basic NET and the NET Platform An Advanced Guide等十多部NET技术方面的著作 本书是c#领域久负盛名的经典著作,深入全面地叙述了c#编程语言和.net平台核心,并以大量示例剖析相关概念。书中介绍了c#的各种语言构造、.net 2.0的类、核心api、公共中间语言(cil)、动态程序集和asp.net扩展等内容;同时也介绍了.net 3.0和.net 3.5中新的编程api,包括wpf 、wcf和wf 的功能;另外,还介绍了最新的c# 3.0编程语言、linq编程技术、com与.net 的互操作性以及平台无关的.net开发。   本书由微软c# mvp andrew troelsen编写,历经多次修订,适合各层次.net开发人员阅读。 第一部分 c#和.net平台简介 第1章 net之道  1.1 net之前的世界  1.2 net解决方案  1.3 net平台构造块(clr、cts和cls)简介  1.4 其他支持.net的编程语言  1.5 net程序集概览  1.6 cts  1.7 cls  1.8 clr  1.9 程序集/命名空间/类型的区别  1.10 使用ildasm.exe探索程序集  1.11 使用lutz roeder的reflector来查看程序集  1.12 部署.net运行库  1.13 net的平台无关性  1.14 小结  第2章 构建c#应用程序  2.1 net framework 3.5 sdk的作用  2.2 用csc.exe构建c#应用程序  2.3 使用textpad构建.net应用程序  . 2.4 使用notepad++构建.net应用程序  2.5 使用sharpdevelop构建.net应用程序  2.6 使用visual c# 2008 express构建.net应用程序  2.7 使用visual studio 2008构建.net应用程序  2.8 其他.net开发工具  2.9 小结  第二部分 c#核心编程结构 第3章 c#核心编程结构ⅰ  3.1 一个简单的c#程序  3.2 有趣的题外话:system.environment类的其他成员  3.3 system.console类  3.4 系统数据类型和c#简化符号  3.5 system.string数据类型  3.6 窄化和宽化数据类型转换  3.7 c#迭代结构  3.8 条件结构和关系/相等运算符  3.9 小结  第4章 c#核心编程结构ⅱ  4.1 方法和参数修饰符  4.2 成员重载  4.3 c#中的数组操作  4.4 枚举类型  4.5 结构类型  4.6 值类型和引用类型  4.7 值类型和引用类型:最后的细节  4.8 c#可空类型  4.9 小结  第5章 定义封装的类类型  5.1 c#类类型  5.2 类构造函数  5.3 this关键字的作用  5.4 static关键字  5.5 定义oop的支柱  5.6 c#访问修饰符  5.7 第一个支柱:c#的封装支持  5.8 常量数据  5.9 只读字段  5.10 c#的分部类型  5.11 通过xml生成c#源代码的文档  5.12 查看劳动成果  5.13 小结  第6章 继承和多态  6.1 继承的基本机制  6.2 回顾visual studio类关系图  6.3 第二个支柱:继承  6.4 包含/委托编程  6.5 第三个支柱:c#的多态支持  6.6 基类/派生类的转换规则  6.7 超级父类:system.object  6.8 小结  第7章 结构化异常处理  7.1 错误、bug与异常  7.2 net异常处理的作用  7.3 最简单的例子  7.4 配置异常的状态  7.5 系统级异常(system.systemexception)  7.6 应用程序级异常(system.applicationexception)  7.7 处理多个异常  7.8 finally块  7.9 谁在引发什么异常 7.10 未处理异常的后果  7.11 使用visual studio调试未处理的异常  7.12 小结  第8章 对象的生命周期  8.1 类、对象和引用  8.2 对象生命周期的基础  8.3 应用程序根的作用  8.4 对象的代  8.5 system.gc类型  8.6 构建可终结对象  8.7 构建可处置对象  8.8 构建可终结类型和可处置类型  8.9 小结  第三部分 c#高级编程结构 第9章 接口  9.1 接口类型  9.2 定义自定义接口  9.3 实现接口  9.4 在对象级别调用接口成员  9.5 接口作为参数  9.6 接口作为返回值  9.7 接口类型数组  9.8 使用visual studio 2008实现接口  9.9 通过显式接口实现解决命名冲突  9.10 定义接口层次结构  9.11 构建可枚举类型(ienumerable和ienumerator)  9.12 构建可克隆的对象(icloneable)  9.13 构建可比较的对象(icomparable)  9.14 回调接口  9.15 小结  第10章 集合与泛型  10.1 system.collections命名空间的接口  10.2 system.collections命名空间的类类型  10.3 system.collections.specialized命名空间  10.4 装箱、拆箱以及和system.object的关系  10.5 类型安全和强类型集合问题  10.6 system.collections.generic命名空间  10.7 创建自定义泛型方法  10.8 创建泛型结构和类  10.9 创建自定义泛型集合  10.10 创建泛型基类  10.11 创建泛型接口  10.12 小结  第11章 委托、事件和lambda  11.1 net委托类型  11.2 使用c#定义委托  11.3 system.multicastdelegate与system.delegate基类  11.4 最简单的委托示例  11.5 使用委托改造car类型  11.6 更复杂的委托示例  11.7 委托协变  11.8 创建泛型委托  11.9 c#事件  11.10 泛型eventhandlert委托  11.11 c#匿名方法  11.12 方法组转换  11.13 c# 3.0 lambda运算符  11.14 小结  第12章 索引器、运算符和指针  12.1 索引器方法  12.2 运算符重载  12.3 自定义类型转换  12.4 指针类型  12.5 c#预处理指令  12.6 小结  第13章 c# 3.0的语言功能  13.1 隐式类型局部变量  13.2 自动属性  13.3 扩展方法  13.4 分部方法  13.5 对象初始化器  13.6 匿名类型  13.7 小结  第14章 linq  14.1 linq的作用  14.2 linq查询表达式初览  14.3 linq和泛型集合  14.4 linq和非泛型集合  14.5 查询运算符的内部表示  14.6 linq查询运算符  14.7 linq查询  14.8 小结  第四部分 使用.net程序集编程 第15章 .net程序集入门  15.1 定义自定义命名空间  15.2 .net程序集的作用  15.3 .net程序集的格式  15.4 构建和使用单文件程序集  15.5 构建和使用多文件程序集  15.6 私有程序集  15.7 共享程序集  15.8 使用共享程序集  15.9 配置共享程序集  15.10 gac的内部结构  15.11 发行者策略程序集  15.12 codebase元素  15.13 system.configuration命名空间  15.14 机器配置文件  15.15 小结  第16章 类型反射、晚期绑定和基于特性的编程  16.1 类型元数据的必要性  16.2 反射  16.3 构建自定义的元数据查看器  16.4 动态加载程序集  16.5 反射共享程序集  16.6 晚期绑定  16.7 特性编程 16.8 构建自定义特性  16.9 程序集级别(和模块级别)特性  16.10 使用早期绑定反射特性  16.11 使用晚期绑定反射特性  16.12 反射、晚期绑定和自定义特性的使用背景  16.13 构建可扩展的应用程序  16.14 小结  第17章 进程、应用程序域和对象上下文  17.1 回顾传统的win32进程  17.2 net平台下与进程进行交互  17.3 net应用程序域  17.4 对象上下文边界  17.5 进程、应用程序域和上下文小结  17.6 小结  第18章 构建多线程应用程序  18.1 进程、应用程序域、上下文及线程之间的关系  18.2 net委托的简短回顾  18.3 委托的异步性  18.4 异步调用方法  18.5 system.threading命名空间  18.6 system.threading.thread类  18.7 以编程方式创建次线程  18.8 并发问题  18.9 使用timer callback编程  18.10 clr线程池  18.11 backgroundworker组件的作用  18.12 小结  第19章 cil和动态程序集的作用  19.1 cil编程的本质  19.2 cil指令、特性和操作码  19.3 入栈和出栈:cil基于栈的本质  19.4 正反向工程  19.5 cil指令和特性  19.6 net基类库、c#和cil数据类型的映射  19.7 在cil中定义成员  19.8 剖析cil操作码  19.9 使用cil构建.net程序集  19.10 动态程序集  19.11 小结  第五部分 .net基类库简介 第20章 文件输入输出和隔离存储  20.1 研究system.io命名空间  20.2 directory(info)和file(info)类型  20.3 使用directoryinfo类型  20.4 使用directory类型  20.5 使用driveinfo类类型  20.6 使用fileinfo类  20.7 使用file类型 533 20.8 stream抽象类 535 20.9 使用streamwriter和streamreader类型  20.10 使用stringwriter和stringreader  20.11 使用binarywriter和binaryreader  20.12 以编程方式“观察”文件  20.13 实现异步文件i/o操作  20.14 隔离存储的作用  20.15 代码访问安全入门  20.16 隔离存储概览  20.17 使用isolatedstoragefile获取存储  20.18 实战隔离存储:clickonce部署  20.19 小结  第21章 对象序列化 21.1 对象序列化  21.2 为序列化配置对象 21.3 选择序列化格式化程序  21.4 使用binaryformatter序列化对象 21.5 使用soapformatter序列化对象 21.6 使用xmlserializer序列化对象  21.7 序列化对象集合  21.8 自定义序列化过程  21.9 小结 第22章 ado.net之一:连接层 22.1 ado.net高层次定义 22.2 ado.net的数据提供程序 22.3 其他的ado.net命名空间  22.4 system.data命名空间的类型 22.5 使用接口抽象数据提供程序  22.6 创建autolot数据库  22.7 ado.net 数据提供程序工厂模型  22.8 ado.net的连接式访问  22.9 使用数据读取器  22.10 构建可重用的数据访问库 22.11 创建控制台ui前端  22.12 使用sqlcommand进行异步数据访问  22.13 数据库事务  22.14 小结  第23章 ado.net之二:断开连接层 23.1 ado.net断开连接层  23.2 dataset的作用  23.3 使用datacolumn  23.4 使用datarow  23.5 使用datatable  23.6 将datatable对象绑定到用户界面  23.7 使用数据适配器填充dataset/ datatable  23.8 重访autolotdal.dll  23.9 切换多表dataset对象  23.10 visual studio 2008的数据访问工具  23.11 从ui层解耦自动生成的代码  23.12 小结  第24章 linq api编程  24.1 linq to ado.net的作用  24.2 使用linq to dataset编程  24.3 使用linq to sql编程  24.4 使用sqlmetal.exe生成实体类  24.5 使用visual studio 2008建立实体类  24.6 使用linq to xml操作xml文档  24.7 在内存文档中导航  24.8 小结  第25章 wcf  25.1 各种分布式计算api  25.2 wcf的作用  25.3 wcf核心程序集  25.4 visual studio wcf项目模板  25.5 wcf应用程序的基本构成  25.6 wcf的abc  25.7 构建wcf服务  25.8 承载wcf服务  25.9 构建wcf客户端应用程序  25.10 使用wcf服务库项目模板  25.11 以windows服务承载wcf服务  25.12 异步调用服务  25.13 定义wcf数据契约  25.14 小结  第26章 wf  26.1 定义业务流程  26.2 wf的构建块  26.3 wf程序集、命名空间和项  26.4 构建一个启用工作流的简单应用  26.5 wf引擎承载代码  26.6 在工作流中调用web服务  26.7 构建可重用的wf代码库  26.8 关于自定义活动的简要说明  26.9 小结  第六部分 桌面用户界面 第27章 windows forms编程  27.1 windows forms 命名空间  27.2 创建一个简单的windows forms 程序(不用ide)  27.3 visual studio windows forms项目模板  27.4 剖析form  27.5 响应鼠标活动  27.6 响应键盘活动  27.7 设计对话框  27.8 通过gdi+呈现图形数据  27.9 创建一个完整的windows forms应用程序  27.10 小结  第28章 wpf和xaml  28.1 wpf背后的动机  28.2 各种形式的wpf应用程序  28.3 wpf程序集  28.4 创建(不使用xaml的)wpf应用程序  28.5 application类型的其他细节  28.6 window类型的其他细节  28.7 构建(xaml相关的)wpf应用程序  28.8 将标记转换为.net程序集  28.9 使用代码隐藏文件实现的关注点的分离  28.10 xaml语法  28.11 使用visual studio 2008构建wpf应用程序  28.12 在运行时处理xaml:simplexaml- pad.exe  28.13 微软expression blend的作用  28.14 小结  第29章 使用wpf控件编程  29.1 wpf控件库概述  29.2 使用xaml声明控件  29.3 依赖属性的作用  29.4 路由事件  29.5 使用button类型  29.6 使用checkboxe和radiobutton  29.7 使用listbox和combobox类型  29.8 使用文本区  29.9 使用面板进行内容布局  29.10 使用嵌套面板创建窗口框架  29.11 wpf控件命令  29.12 wpf数据绑定模型  29.13 使用ivalueconverter进行数据转换  29.14 绑定到自定义对象  29.15 将ui元素绑定到xml文档  29.16 小结  第30章 wpf 2d图形呈现、资源和主题  30.1 wpf图形呈现服务  30.2 探究shape派生类  30.3 使用wpf画刷  30.4 使用wpf画笔  30.5 探究drawing派生类  30.6 ui变换的功能  30.7 wpf动画服务  30.8 wpf的资源体系  30.9 为wpf控件定义应用样式  30.10 使用模板改变控件的ui  30.11 小结  第七部分 使用asp.net构建web应用程序 第31章 构建asp.net网页  31.1 http的作用  31.2 web应用程序和web服务  31.3 html的作用  31.4 客户端脚本的作用  31.5 提交表单数据(get和post)  31.6 构建传统的asp页面  31.7 传统asp相关问题  31.8 asp.net命名空间  31.9 asp.net网页代码模型  31.10 asp.net站点目录结构细节  31.11 asp.net页面编译周期  31.12 页面类型的继承链  31.13 与传入的http请求交互  31.14 与输出http响应交互  31.15 asp.net网页的生命周期  31.16 web.config文件的作用  31.17 小结  第32章 asp.net web控件、主题和母版页  32.1 web控件的本质  32.2 system.web.ui.control类型  32.3 system.web.ui.webcontrols.webcontrol类型  32.4 asp.net web控件的类别  32.5 构建功能丰富的asp.net站点  32.6 验证控件的作用  32.7 使用主题  32.8 使用html表格布局控件  32.9 小结  第33章 asp.net状态管理技术  33.1 状态问题  33.2 asp.net状态管理技术  33.3 asp.net视图状态的作用  33.4 global.asax文件的作用  33.5 应用程序状态与会话状态差别  33.6 使用应用程序缓存  33.7 维护会话数据  33.8 cookie  33.9 sessionstate元素的作用  33.10 asp.net用户配置api  33.11 小结  第八部分 附录 附录a com与.net的互操作性  a.1 net互操作的研究范围  a.2 net调用com互操作的简单示例  a.3 net互操作程序集  a.4 运行库可调用包装  a.5 com idl的作用  a.6 使用类型库创建互操作程序集  a.7 创建一个更复杂的com服务  a.8 互操作程序集  a.9 在com中使用.net  a.10 ccw的作用  a.11 net类接口的作用  a.12 构建.net类型  a.13 生成类型库并注册.net类型  a.14 导出类型信息  a.15 创建一个visual basic 6.0的测试客户端  a.16 小结  附录b 使用mono进行平台无关的.net开发  b.1 net的平台无关性  b.2 获取和安装mono  b.3 mono开发工具  b.4 使用mono创建.net应用程序  b.5 推荐学习  b.6 小结  索引 

    2012-07-31
    14
img
a1dsx

关注 私信