产品特色
编辑推荐
《Visual C++ 2012入门经典(第6版)》升级版本,第七版
编程导师Ivor Horton经典作品,连续十五年
作者经典作品包含:《C语言入门经典(第5版)》《 C++入门经典(第3版)》《Java 7入门经典》
Ivor Horton经典作品:
内容简介
著名编程图书作家Ivor Horton引导学习Visual C++ 2013这本C++语言畅销书遵循Ivor Horton一贯的畅销风格。Horton非常详尽地介绍了标准C++语言和Visual C++。
《Visual C++ 2013入门经典(第7版)》根据Visual C++ 2013进行了更新,展示了如何使用Visual C++建立实用的应用程序。阅读本书不需要任何编程经验。作者使用大量循序渐进的编程示例,引导读者掌握C++开发的全部奥秘。
《Visual C++ 2013入门经典(第7版)》特色
◆ 介绍C++编程的基本概念以及Visual C++开发环境的要点
◆ 从简单的过程式程序开始解释C++语言,逐步过渡到类和面向对象编程
◆ 演示如何在各种环境下应用标准模板库(STL)
◆ 揭示每个Windows桌面应用程序中的基本元素
◆ 展示如何使用MFC建立图形用户界面以编写Windows应用程序
◆ 通过一个在Windows 8下执行的游戏示例,说明如何开发Windows Store应用程序
作者简介
Ivor Horton,是世界著名计算机图书作家,独立顾问,帮助无数程序员步入编程殿堂。他曾在IBM工作多年,以优异成绩拥有数学学士学位。他的资历包括:使用大多数语言(如在多种机器上使用汇编语言和高级语言)进行编程,实时编程,设计和实现实时闭环工业控制系统。Horton拥有丰富的面向工程师和科学家的编程教学经验(教学内容包括C、C++、Fortran、PL/1、APL等)。同时,他还是机械、加工和电子CAD系统、机械CAM系统和DNC/CNC系统方面的专家。
目录
第1章 使用Visual C++编程 1
1.1 使用Visual C++学习 1
1.2 编写C++应用程序 2
1.3 学习桌面应用程序的编程 2
1.3.1 学习C++ 3
1.3.2 C++概念 3
1.3.3 控制台应用程序 4
1.3.4 Windows编程概念 4
1.4 集成开发环境简介 6
1.4.1 编辑器 6
1.4.2 编译器 6
1.4.3 链接器 6
1.4.4 库 7
1.4.5 标准C++库 7
1.4.6 Microsoft库 7
1.5 使用IDE 7
1.5.1 工具栏选项 8
1.5.2 可停靠的工具栏 9
1.5.3 文档 9
1.5.4 项目和解决方案 9
1.5.5 设置Visual C++的选项 16
1.5.6 创建和执行Windows应用程序 17
1.6 小结 19
1.7 本章主要内容 19
第2章 数据、变量和计算 21
2.1 C++程序结构 21
2.1.1 main()函数 28
2.1.2 程序语句 28
2.1.3 空白 30
2.1.4 语句块 30
2.1.5 自动生成的控制台程序 30
2.2 定义变量 32
2.2.1 命名变量 32
2.2.2 关键字 32
2.2.3 声明变量 33
2.2.4 变量的初始值 33
2.3 基本数据类型 34
2.3.1 整型变量 34
2.3.2 字符数据类型 35
2.3.3 整型修饰符 36
2.3.4 布尔类型 36
2.3.5 浮点类型 37
2.3.6 C++中的基本类型 37
2.3.7 字面值 38
2.3.8 定义类型的别名 39
2.4 基本的输入/输出操作 40
2.4.1 从键盘输入 40
2.4.2 到命令行的输出 40
2.4.3 格式化输出 41
2.4.4 转义序列 42
2.5 C++中的计算 44
2.5.1 赋值语句 44
2.5.2 算术运算 44
2.5.3 计算余数 49
2.5.4 修改变量 49
2.5.5 增量和减量运算符 50
2.5.6 计算的顺序 52
2.6 类型转换和类型强制转换 53
2.6.1 赋值语句中的类型转换 54
2.6.2 显式类型转换 54
2.6.3 老式的类型强制转换 55
2.7 auto关键字 55
2.8 类型的确定 56
2.9 按位运算符 56
2.9.1 按位AND运算符 57
2.9.2 按位OR运算符 58
2.9.3 按位XOR运算符 59
2.9.4 按位NOT运算符 60
2.9.5 移位运算符 60
2.10 lvalue和rvalue 61
2.11 了解存储时间和作用域 62
2.11.1 自动变量 62
2.11.2 决定变量声明的位置 65
2.11.3 全局变量 65
2.11.4 静态变量 68
2.12 具有特定值集的变量 68
2.12.1 旧枚举 68
2.12.2 类型安全的枚举 70
2.13 名称空间 72
2.13.1 声明名称空间 73
2.13.2 多个名称空间 74
2.14 小结 75
2.15 练习 75
2.16 本章主要内容 76
第3章 判断和循环 79
3.1 比较数据值 79
3.1.1 if语句 80
3.1.2 嵌套的if语句 81
3.1.3 嵌套的if-else语句 85
3.1.4 逻辑运算符和表达式 87
3.1.5 条件运算符 89
3.1.6 switch语句 91
3.1.7 无条件转移 94
3.2 重复执行语句块 95
3.2.1 循环的概念 95
3.2.2 for循环的变体 98
3.2.3 while循环 105
3.2.4 do-while循环 107
3.2.5 基于范围的循环 108
3.2.6 嵌套的循环 108
3.3 小结 111
3.4 练习 111
3.5 本章主要内容 111
第4章 数组、字符串和指针 113
4.1 处理多个相同类型的数据值 113
4.1.1 数组 114
4.1.2 声明数组 114
4.1.3 初始化数组 117
4.1.4 使用基于范围的for循环 118
4.1.5 多维数组 119
4.2 处理C样式的字符串 123
4.2.1 字符串输入 124
4.2.2 字符串字面量 125
4.2.3 给字符串使用基于范围的for循环 126
4.3 间接数据访问 128
4.3.1 指针的概念 128
4.3.2 声明指针 128
4.3.3 使用指针 129
4.3.4 初始化指针 130
4.3.5 指向char类型的指针 132
4.3.6 sizeof操作符 136
4.3.7 常量指针和指向常量的指针 136
4.3.8 指针和数组 138
4.4 动态内存分配 144
4.4.1 堆的别名—— 空闲存储器 144
4.4.2 new和delete操作符 145
4.4.3 为数组动态分配内存 146
4.4.4 多维数组的动态分配 148
4.5 使用引用 149
4.5.1 引用的概念 149
4.5.2 声明并初始化lvalue引用 149
4.5.3 在基于范围的for循环中
使用引用 150
4.5.4 创建rvalue引用 151
4.6 字符串的库函数 151
4.6.1 确定以空字符结尾的字符串的长度 152
4.6.2 连接以空字符结尾的字符串 152
4.6.3 复制以空字符结尾的字符串 153
4.6.4 比较以空字符结尾的字符串 154
4.6.5 搜索以空字符结尾的字符串 154
4.7 小结 156
4.8 练习 156
4.9 本章主要内容 157
第5章 程序结构(1) 159
5.1 理解函数 159
5.1.1 需要函数的原因 160
5.1.2 函数的结构 161
5.1.3 替代的函数语法 163
5.1.4 使用函数 163
5.2 给函数传递实参 166
5.2.1 按值传递机制 167
5.2.2 给函数传递指针实参 168
5.2.3 给函数传递数组 169
5.2.4 给函数传递引用实参 173
5.2.5 使用const修饰符 175
5.2.6 rvalue引用形参 176
5.2.7 main()函数的实参 178
5.2.8 接受数量不定的函数实参 179
5.3 从函数返回值 181
5.3.1 返回指针 181
5.3.2 返回引用 184
5.3.3 函数中的静态变量 186
5.4 递归函数调用 188
5.5 小结 191
5.6 练习 191
5.7 本章主要内容 192
第6章 程序结构(2) 193
6.1 函数指针 193
6.1.1 声明函数指针 194
6.1.2 函数指针作为实参 196
6.1.3 函数指针的数组 198
6.2 初始化函数形参 198
6.3 异常 200
6.3.1 抛出异常 202
6.3.2 捕获异常 202
6.3.3 重新抛出异常 204
6.3.4 MFC中的异常处理 204
6.4 处理内存分配错误 205
6.5 函数重载 206
6.5.1 函数重载的概念 207
6.5.2 引用类型和重载选择 209
6.5.3 何时重载函数 210
6.6 函数模板 210
6.7 使用decltype操作符 212
6.8 使用函数的示例 215
6.8.1 实现计算器 215
6.8.2 从字符串中删除空格 217
6.8.3 计算表达式的值 218
6.8.4 获得项值 220
6.8.5 分析数 221
6.8.6 整合程序 224
6.8.7 扩展程序 225
6.8.8 提取子字符串 227
6.8.9 运行修改过的程序 229
6.9 小结 229
6.10 练习 229
6.11 本章主要内容 230
第7章 自定义数据类型 233
7.1 C++中的结构 233
7.1.1 结构的概念 234
7.1.2 定义结构 234
7.1.3 初始化结构 234
7.1.4 访问结构的成员 235
7.1.5 伴随结构的智能感知帮助 238
7.1.6 RECT结构 239
7.1.7 使用指针处理结构 240
7.2 数据类型、对象、类和实例 241
7.2.1 类的起源 243
7.2.2 类的操作 243
7.2.3 术语 244
7.3 理解类 244
7.3.1 定义类 244
7.3.2 声明类的对象 245
7.3.3 访问类的数据成员 245
7.3.4 对象成员的初始化 247
7.3.5 初始化类成员 248
7.3.6 类的成员函数 248
7.3.7 在类的外部定义成员函数 250
7.3.8 内联函数 251
7.4 类构造函数 252
7.4.1 构造函数的概念 252
7.4.2 默认的构造函数 254
7.4.3 默认的形参值 256
7.4.4 在构造函数中使用初始化列表 258
7.4.5 声明显式的构造函数 259
7.4.6 委托构造函数 260
7.5 类的私有成员 260
7.5.1 访问私有类成员 263
7.5.2 类的友元函数 263
7.5.3 默认复制构造函数 266
7.6 this指针 267
7.7 类的const对象 269
7.7.1 类的const成员函数 270
7.7.2 类外部的成员函数定义 271
7.8 类对象的数组 271
7.9 类的静态成员 273
7.9.1 类的静态数据成员 273
7.9.2 类的静态函数成员 276
7.10 类对象的指针和引用 277
7.10.1 类对象的指针 277
7.10.2 类对象的引用 279
7.11 小结 280
7.12 练习 280
7.13 本章主要内容 281
第8章 深入理解类 283
8.1 类析构函数 283
8.1.1 析构函数的概念 284
8.1.2 默认的析构函数 284
8.1.3 析构函数与动态内存分配 286
8.2 实现复制构造函数 289
8.3 运算符重载 291
8.3.1 实现重载的运算符 291
精彩书摘
2. #include指令—— 头文件
在注释之后有一个#include指令:
#include
之所以称其为指令,是因为它命令编译器完成某项任务—— 此处是在编译之前,在此程序的源文件中插入文件iostream的内容,该文件名位于尖括号之间。iostream文件称为头文件,因为它总是插入到另一个源文件中。iostream头文件是标准C++库的一部分,它包含一些使用输入和输出语句所需的定义。如果没有在此程序中包括iostream的内容,那么不能编译这个程序,因为在这个程序中使用的输出语句依赖该文件中的一些定义。Visual C++提供了许多不同的标准头文件,它们具有各种各样的功能。在进一步学习语言工具时,将看到更多的头文件。
由#include指令插入的文件的名称不一定写在尖括号之间。头文件名也可以写在双引号中。因此上面的代码也可以写成:
#include "iostream"
两者之间的唯一区别是编译器将在什么地方查找此文件。如果头文件名是用双引号引起来的,则编译器先在包含此指令的源文件所在的目录中搜索头文件。如果头文件未找到,编译器再搜索存储标准头文件的目录。
如果文件名是用尖括号括起来的,则编译器只搜索包含标准头文件的目录。因此,想在源文件中包含标准头文件时,应该将文件名用尖括号括起来,因为这样的搜索速度更快。而要包含其他头文件,一般是自己创建的头文件,则应该将文件名用双引号引起来;否则,根本找不到。
#include语句是几个预处理器指令中的一个,本书后面将介绍其他预处理指令。编辑器会在编辑窗口中用蓝色突出显示它们。预处理器指令是由编译的预处理阶段执行的命令,这个阶段在代码编译成目标代码之前执行,在编译源代码之前,预处理器指令通常以某种方式作用于它们。预处理器指令都以#字符开头。
3. 名称空间和using声明
如第1章所述,标准库是一个大型的例程集合,用于执行许多常见的任务,如处理输入和输出,以及执行基本的数学计算。由于标准库中的这些例程以及其他具有名称的事物数量巨大,因此用户使用的名称可能无意中与标准库中的名称雷同。名称空间是一种机制,它可以将无意中使用重名的风险降至最低,其方法是将一组给定的名称(如标准库中的名称)与一种姓(family name)关联起来,这种姓就是名称空间名称。
在名称空间的代码中定义的每个名称都有一个关联的名称空间名称。标准库工具定义在std名称空间内,所以标准库中的每一项都有自己的名称,以及作为限定符的名称空间名称std。标准库中cout和endl的全名是std::cout和std::endl,第1章介绍过这些名称。将名称空间名称和实体名分隔开的两个冒号构成了称为“作用域解析运算符”的运算符,本书后面将介绍这种运算符的其他用途。在程序中使用全名会使代码看起来有点混乱,所以最好使用不由名称空间名称std限定的简化名。在前面的程序中,iostream的#include指令后面的两行代码使之得以实现:
using std::cout;
using std::endl;
这些是using声明,它们告诉编译器,要在不指定名称空间名称的情况下使用名称空间std中的名称cout和endl。编译器假定,在第一个using声明之后,只要使用名称cout,就表示std::cout。名称cout表示对应于命令行的标准输出流,名称endl表示换行符,并刷新输出缓存。本章后面会详细介绍名称空间,包括如何自定义名称空间。
2.1.1 main()函数
上述示例中的函数main()包括将它定义为main()的函数头,以及从第一个左大括号({)到对应的右大括号(})之间的所有语句。这对括号将这个函数中的可执行语句包围起来,它们总称为函数体。
所有函数都包括一个定义函数名称的头,然后是函数体,它由包括在大括号之间的一些程序语句组成。函数体也可以不包含任何语句,这时它不做任何事情。
不做任何事情的函数似乎有些多余,但是在编写大程序时,一开始可以先勾画出函数中的完整程序结构,而忽略许多函数的代码,使它们有一个空的或者最小的函数体。这意味着,可以随时编译和执行包含所有函数的整个程序,并逐步给函数添加详细的代码。
2.1.2 程序语句
main()函数体的每个程序语句都以一个分号结束。分号表示语句的结束,而不是这一行的结束。因此,为了使代码更易于理解,可以把一个语句扩展成几行,也可以把几个语句放在同一行中。程序语句是定义程序功能的基本单元。这有点像文章中一个段落的句子,每个句子都独立地表达一个行为或想法,和这个段落中的其他句子联系和组合起来,就表达出比较全面的想法。一个语句就是计算机将要执行的一个行为的自包含定义,和其他语句组合起来, 就可以定义比较复杂的行为或计算。
函数的行为始终由一些语句来表达,每个语句都以分号
Visual C++ 2013入门经典(第7版) [Ivor Horton’s Beginning Visual C++ 2013] 下载 mobi epub pdf txt 电子书 格式
Visual C++ 2013入门经典(第7版) [Ivor Horton’s Beginning Visual C++ 2013] 下载 mobi pdf epub txt 电子书 格式 2024
Visual C++ 2013入门经典(第7版) [Ivor Horton’s Beginning Visual C++ 2013] 下载 mobi epub pdf 电子书
Visual C++ 2013入门经典(第7版) [Ivor Horton’s Beginning Visual C++ 2013] mobi epub pdf txt 电子书 格式下载 2024