没有合适的资源?快使用搜索试试~ 我知道了~
首页程序设计实习课程整理.pdf
程序设计实习课程整理.pdf
需积分: 31 9 下载量 120 浏览量
更新于2023-05-15
评论
收藏 5.43MB PDF 举报
【北京大学】程序设计实习总结 (C++版) 郭炜/刘家瑛老师, 108页,总结 第一章 从C走进C++ 第二章 类和对象初探 第三章 类和对象进阶 第四章 运算符重载 第五章 继承与派生 第六章 多态与虚函数 第七章 输入输出,文件操作和模板 第八章 标准模板库STL (1) 第九章 标准模板库STL (2)
资源详情
资源评论
资源推荐
1 / 108
【北京大学】程序设计实习 (C++版) 郭炜/刘家瑛老师
参考:
1. https://www.bilibili.com/video/av60329215?p=16
2. https://www.runoob.com/cplusplus/cpp-tutorial.html
3. https://blog.csdn.net/beashaper_/article/category/7689004/1
目录
第 1 周 从 C 走进 C++ ............................................................................................................. 3
1-1 函数指针 .................................................................................................................... 3
1-2 命令行参数 ................................................................................................................ 5
1-3 位运算 ....................................................................................................................... 6
1-4“引用”的概念和应用 .................................................................................................. 9
1-5 const 关键字和常量 ................................................................................................. 11
1-6 动态内存分配 .......................................................................................................... 12
1-7 内联函数和重载函数 .............................................................................................. 13
1-8 函数缺省参数 ......................................................................................................... 14
第 2 周 类和对象初步 ........................................................................................................... 14
2-1 面向对象程序设计方法 ......................................................................................... 14
2-2 面向对象程序设计语言发展过程 ........................................................................... 15
2-3 从客观对象抽象出的例子....................................................................................... 17
2-4 类成员的可访问范围 ............................................................................................. 19
2-5 内联函数和重载函数 ............................................................................................. 19
2-6 构造函数 ................................................................................................................. 20
第 3 周 类和对象进阶 ........................................................................................................... 23
3-1 复制构造函数 .......................................................................................................... 23
3-2 类型转化函数 .......................................................................................................... 26
3-3 析构函数 ................................................................................................................. 27
3-4 静态成员函数和静态成员变量 .............................................................................. 30
3-5 成员对象和封闭类 ................................................................................................. 31
3-6 友元 ......................................................................................................................... 33
3-7 this 指针.................................................................................................................... 33
3-8 常量对象,常量成员变量,常引用 ...................................................................... 34
第 4 周 运算符重载 ............................................................................................................... 37
4-1 运算符重载的基本概念 ......................................................................................... 37
4-2 赋值运算符重载函数 ............................................................................................. 39
4-3 运算符重载为友元函数 ......................................................................................... 41
4-4 可变长度的整形数组 ............................................................................................. 42
4-5 流插入运算符和流提取运算符重载 ...................................................................... 42
4-6 自加自减运算符的重载 ......................................................................................... 43
第 5 周 继承与派生 ............................................................................................................... 46
5-1 继承和派生 ............................................................................................................. 46
5-2 复合关系和继承关系 ............................................................................................. 46
5-3 基类/派生类同名函数和 protected 关键字 ........................................................ 49
2 / 108
5-4 派生类的构造函数 ............................................................................................... 51
5-5 public 赋值兼容规则 ............................................................................................ 53
第 6 周 多态与虚函数 ........................................................................................................... 55
6-1 虚函数和多态 ......................................................................................................... 55
6-2 使用多态程序处理程序 ......................................................................................... 56
6-3 更多多态例子程序 ................................................................................................. 56
6-4 虚函数原理 ............................................................................................................. 57
6-5 虚析构函数 ............................................................................................................. 58
6-5 虚函数和抽象类 ..................................................................................................... 60
第 7 周 文件操作和模板 ....................................................................................................... 62
7-1 文件操作 ................................................................................................................. 62
7-2 函数模板 ................................................................................................................. 65
7-3 类模板 ..................................................................................................................... 69
7-4 string 类 ................................................................................................................. 73
7-5 输入输出类 ............................................................................................................. 80
第 8 周 STL-1 .......................................................................................................................... 83
8-1 STL-概述 ................................................................................................................. 83
8-2 STL-概述(续) ..................................................................................................... 87
8-3 顺序容器 vector .................................................................................................... 89
8-4 list 与 deque .......................................................................................................... 90
8-5 函数对象 ............................................................................................................... 91
第 9 周 STL-2 .......................................................................................................................... 93
9-1 Set 与 Multiset ....................................................................................................... 93
9-2 Map 与 Multimap .................................................................................................. 93
9-3 容器适配器 ........................................................................................................... 94
9-4 算法 ....................................................................................................................... 95
9-5 算法(续) ........................................................................................................... 95
第 10 周 C++11 ...................................................................................................................... 96
10-1 C++11 新特性 ...................................................................................................... 96
10-2 C++11 新特性(续) .......................................................................................... 99
10-3 强制类型转化 ................................................................................................... 102
10-4 异常处理 ........................................................................................................... 105
3 / 108
第 1 周 从 C 走进 C++
1-1 函数指针
程序运行期间,每个函数都会占用一段连续的内存空间。而函数名就是该函
数所占内存区域的起始地址(也称“入口地址” )。我们可以将函数的入口地址
赋给一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以调用这
个函数。这种指向函数的指针变量称为“函数指针”。
笔试题:
1.指针函数和指针函数的区别
指针函数:本质上是带有指针的函数;函数的返回值类型是某一类型的指针;
定义形式为 类型名 *函数名(参数列表);
例如:int* f(int i);
函数指针: 本质上是指针,指针指向的是一个函数;
定义形式为 类型名 (*函数名(参数列表));
例如 int (*f)( int i);
2. 指针数组和数组指针区别
指针数组:存放指针的数组,也就是数组元素存的都是指针,程序定义:int* a[4];
数组指针:指针指向数组。程序的定义为 int (*a)[4];
举例:
int main()
{
Int c[4]={1,2,3,4};
int* a[4]; //指针数组
int (*b)[4]; //数组指针
b=&c;
//将数组 c 中元素赋给数组 a
for(int *i=0;i<4;i++)
{
a[i]=&c[i];
}
…;
}
3.函数指针数组
const double* (*pa[3])(const double *, int) = {f1, f2, f3};
上述声明中 pa[3],表示 pa 是一个包含三个元素的数组,运算符 [] 优先级高
于 * ,因此 *pa[3] 表示是一个包含三个指针的数组
注意:定义了数组指针,该指针指向这个数组的首地址,必须给指针指定一个地址,容易犯的错
得就是,不给 b 地址,直接用(*b)[i]=c[i]给数组 b 中元素赋值,这时数组指针不知道指向哪
里,调试时可能没错。
函数指针使用方法:
4 / 108
可以用一个原型匹配的函数的名字给一个函数指针赋值。
代码:
#include <iostream>
using namespace std;
void PriMin(int a, int b){
if (a < b){
cout <<"最小的值是"<< a << endl;
}
else {
cout<< "最小的值是" << b << endl;
}
}
int main()
{
void (*f)(int,int);
f = PriMin;
int x = 4, y = 5;
f(4,5);
return 0;
}
运行结果:
函数指针和 qsort 库函数
void qsort(void *base, int nelem, unsigned int width, int ( * pfCompare)( const void *, const void
*));
base: 待排序数组的起始地址,
nelem: 待排序数组的元素个数,
width: 待排序数组的每个元素的大小(以字节为单位)
pfCompare :比较函数的地址
pfCompare: 函数指针,它指向一个“比较函数”。
该比较函数应为以下形式:
int 函数名(const void * elem1, const void * elem2);
比较函数是程序员自己编写的
排序就是一个不断比较并交换位置的过程。qsort函数在执行期间,会通过
pfCompare指针调用 “比较函数”,调用时将要比较的两个元素的地址传给
5 / 108
“比较函数” ,然后根据“比较函数”返回值判断两个元素哪个更应该排在前
面。
代码:
#include <cstdio>
#include <cstdlib>
#include <iostream>
using namespace std;
int MyCompare(const void* a,const void* b)
{
const int* p1,*p2;
p1 = (const int*)a;
p2 = (const int*)b;
return (*p1%10) -(*p2 % 10);
}
int main()
{
#define NUM 5
int array[NUM] = {12,11,34,42,9};
qsort(array, NUM, sizeof(int),MyCompare);
for (int i = 0; i < NUM; i++)
std::cout << array[i] << std::endl;
return 0;
}
运行结果:
1-2 命令行参数
类型为
剩余107页未读,继续阅读
MetaSmiles
- 粉丝: 619
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0