作者:王桂林 技术交流:329973169
王桂林
Mail:guilin_wang@163.com
C++基础与提高
作者:王桂林 技术交流:329973169
1
.
综述 C++
................................................................................................................................
1
1.1. 作者
...................................................................................................................................
1
1.1.1. 历史背景
................................................................................................................
1
1.1.2. 应“运”而生?运为何?
....................................................................................
1
1.1.3. C++发展大计事
....................................................................................................
1
1.1.4. 现今地位
................................................................................................................
2
1.2. 应用领域
...........................................................................................................................
3
1.2.1. 系统层软件开发
....................................................................................................
3
1
.2.2.
服务器程序开发
....................................................................................................
3
1
.2.3.
流戏,网络,分布式,云计算
............................................................................
3
1
.2.4.
基础类库/科学计算
..............................................................................................
3
1
.3.
内容
...................................................................................................................................
4
1
.4.
书籍推荐
...........................................................................................................................
4
2. C++对 C 的扩展(Externsion)
...............................................................................................
5
2.1. 类型增强
...........................................................................................................................
5
2.1.1. 类型检查更严格
....................................................................................................
5
2
.1.2.
布尔类型(bool)
...............................................................................................
5
2
.1.3.
真正的枚举(enum)
..............................................................................................
5
2.1.4. 表达式的值可被赋值
............................................................................................
6
2.2. 输入与输出(cin /cout)
...................................................................................................
6
2.2.1. cin && cout
..........................................................................................................
6
2.2.2. 格式化
....................................................................................................................
6
2.3. 函数重载(function overload)
......................................................................................
7
2.3.1. 引例
........................................................................................................................
7
2.3.2. 重载规则与调用匹配(overload&match)
....................................................
8
2
.3.3.
重载底层实现(name mangling)
..................................................................
9
2
.3.4.
extern “C”
.........................................................................................................
9
2
.4.
操作符重载(operator overload)
...............................................................................
10
2
.5.
默认参数(default parameters)
.................................................................................
11
2
.5.1.
示例
......................................................................................................................
11
2.5.2. 规则
......................................................................................................................
12
2
.6.
引用(Reference)
...........................................................................................................
12
2
.6.1.
引用的概念
..........................................................................................................
12
2
.6.2.
规则
......................................................................................................................
12
2
.6.3.
应用
......................................................................................................................
13
2.6.4. 引用提高
..............................................................................................................
13
2.6.5. 引用的本质浅析
..................................................................................................
16
2.7. new/delete Operator
.................................................................................................
18
2.7.1. new/new[]用法:
.................................................................................................
18
2.7.2. delete /delete[]用法:
........................................................................................
19
作者:王桂林 技术交流:329973169
2
.7.3.
综合用法
..............................................................................................................
19
2.7.4. 关于返回值
..........................................................................................................
20
2.7.5. 注意事项
..............................................................................................................
20
2.7.6. 更进一步
..............................................................................................................
20
2.8. 内联函数(inline function)
..........................................................................................
20
2.8.1. 内联
......................................................................................................................
20
2.8.2. 语法
......................................................................................................................
21
2.8.3. 评价
......................................................................................................................
21
2
.9.
类型强转(type cast)
....................................................................................................
21
2
.9.1.
静态类型转换:
..................................................................................................
22
2
.9.2.
重解释类型转换:
..............................................................................................
22
2
.9.3.
(脱)常类型转换:
................................................................................................
23
2
.9.4.
动态类型转换:
..................................................................................................
24
2.10. 命名空间(namespace scope)
.................................................................................
24
2.10.1. 为什么要引入 namespace
.............................................................................
24
2.10.2. 默认 NameSpace(Global &Function)
..................................................
25
2
.10.3.
语法规则
............................................................................................................
25
2
.11.
系统 string 类
.............................................................................................................
29
2.11.1. 定义及初始化
....................................................................................................
29
2.11.2. 类型大小
............................................................................................................
29
2.11.3. 常用运算
............................................................................................................
29
2.11.4. 常见的成员函数
................................................................................................
30
2.11.5. string 类型数组
................................................................................................
30
2.12. C++之父给 C 程序员的建议
......................................................................................
31
2.13. 练习
..............................................................................................................................
31
2
.13.1.
格式输出时钟
....................................................................................................
31
2
.13.2.
string 数组的使用
.............................................................................................
31
3
.
封装(Encapsulation)
..........................................................................................................
32
3
.1.
封装
................................................................................................................................
32
3
.1.1.
从 struct 说起
.....................................................................................................
32
3.1.2. 封装
......................................................................................................................
34
3
.1.3.
用 class 去封装带行为的类
...............................................................................
34
3
.2.
练习封装
........................................................................................................................
37
3
.2.1.
封装自己的 list
...................................................................................................
37
4
.
类与对象(Class &&object)
...............................................................................................
38
4.1. stack 声明与定义
..........................................................................................................
38
4.2. 构造器(Constructor)
..............................................................................................
39
4.2.1. 定义及意义
..........................................................................................................
39
4.2.2. 参数初始化表
......................................................................................................
40
4.3. 析造器(Destructor)
.....................................................................................................
41
作者:王桂林 技术交流:329973169
4
.3.1.
对象销毁时期
......................................................................................................
41
4.3.2. 析构器的定义及意义
..........................................................................................
41
4.3.3. 小结
......................................................................................................................
41
4.4. 构造与析构小结
............................................................................................................
41
4.5. 多文件编程
....................................................................................................................
42
4.6. 拷贝构造(Copy contructor)
......................................................................................
42
4.6.1. 拷贝构造的定义及意义
......................................................................................
42
4.6.2. 拷贝构造发生的时机。
......................................................................................
42
4
.6.3.
深拷贝与浅拷贝
..................................................................................................
43
4
.7.
this 指针
.........................................................................................................................
44
4
.7.1.
意义
......................................................................................................................
44
4
.7.2.
作用
......................................................................................................................
44
4
.8.
赋值运算符重载(Operator=)
.....................................................................................
45
4.8.1. 发生的时机
..........................................................................................................
45
4.8.2. 定义
......................................................................................................................
45
4.8.3. 规则
......................................................................................................................
45
4
.9.
返回栈上引用与对象
....................................................................................................
46
4
.9.1.
c 语言返回栈变量
................................................................................................
46
4.9.2. c++返回栈对象
...................................................................................................
46
4.9.3. c++返回栈对象引用
...........................................................................................
49
4.10. 案例系统 string 与 MyString
..................................................................................
50
4.10.1. string 的使用
.....................................................................................................
50
4.10.2. MyString 声明
.................................................................................................
50
4.10.3. 构造
....................................................................................................................
51
4.10.4. 析构
....................................................................................................................
51
4
.10.5.
拷贝构造(深拷贝)
........................................................................................
51
4
.10.6.
赋值运算符重载
................................................................................................
51
4
.10.7.
加法运算符重载
................................................................................................
51
4
.10.8.
关系运算符重载
................................................................................................
52
4
.10.9.
[]运算符重载
......................................................................................................
52
4.10.10. 测试
..................................................................................................................
52
4
.11.
课常练习
......................................................................................................................
53
4
.11.1.
实现钟表类
........................................................................................................
53
4
.11.2.
分析:
................................................................................................................
53
4
.11.3.
代码
....................................................................................................................
53
4.12. 栈和堆上的对象及对象数组
......................................................................................
54
4.12.1. 引例
....................................................................................................................
54
4.12.2. 用 new 和 delete 生成销毁堆对象
...............................................................
55
4.12.3. 栈对象数组
........................................................................................................
55
4.12.4. 堆对象数组
........................................................................................................
55
作者:王桂林 技术交流:329973169
4
.12.5.
结论
....................................................................................................................
55
4.13. 成员函数的存储方式
..................................................................................................
55
4.13.1. 类成员可能的组成
............................................................................................
55
4.13.2. 类成员实际的组成
............................................................................................
56
4.13.3. 调用原理
............................................................................................................
56
4.13.4. 注意事项
............................................................................................................
57
4.14. const 修饰符
..............................................................................................................
57
4.14.1. 常数据成员
........................................................................................................
57
4
.14.2.
常成员函数
........................................................................................................
58
4
.14.3.
常对象
................................................................................................................
59
4
.15.
static 修饰符
...............................................................................................................
59
4
.15.1.
类静态数据成员的定义及初始化
....................................................................
59
4
.15.2.
类静态成员函数的定义
....................................................................................
60
4.15.3. 综合案例
............................................................................................................
62
4.16. static const 成员
.......................................................................................................
63
4.17. 指向类成员的指针
......................................................................................................
64
4
.17.1.
指向普通变量和函数的指针
............................................................................
64
4
.17.2.
指向类数据成员的指针
....................................................................................
64
4.17.3. 指向类成员函数的指针
....................................................................................
65
4.17.4. 指向类成员指针小结:
....................................................................................
66
4.17.5. 应用提高
............................................................................................................
66
4.17.6. 指向类静态成员的指针
....................................................................................
67
4.18. 作业
..............................................................................................................................
68
4.18.1. 按需求设计一个圆类
........................................................................................
68
4.18.2. 编写 C++程序完成以下功能:
......................................................................
68
5
.
友元(Friend)
.........................................................................................................................
69
5
.1.
同类对象间无私处
........................................................................................................
69
5
.2.
异类对象间有友员
........................................................................................................
69
5
.2.1.
友元函数
..............................................................................................................
69
5
.2.2.
友元类
..................................................................................................................
71
5.3. 论友元
............................................................................................................................
72
5
.3.1.
声明位置
..............................................................................................................
72
5
.3.2.
友元的利弊
..........................................................................................................
72
5
.3.3.
注意事项
..............................................................................................................
72
6
.
运算符重载(Operator OverLoad)
....................................................................................
73
6.1. 重载入门
........................................................................................................................
73
6.1.1. 语法格式
..............................................................................................................
73
6.1.2. 友元重载
..............................................................................................................
73
6.1.3. 成员重载
..............................................................................................................
74
6.1.4. 重载规则
..............................................................................................................
75
评论0