算法旅人
2021年12月23日
虽然因为Final 提前,MP11的ddl被延后到12.31了。但学习编写它对于考试还是有助力的,因此这里开个头,写上一半函数。
实际上,ECE220的期末往往是没有足够的时间去好好学习C++的知识的(MP多,Final考试紧张,比如今年我们这届就是MT2和FINAL只相隔一周(因为疫情的反复推迟),导致我们实际上只有不到一周时间复习,这种节点下,我的决策是exam-oriented learning,algorithm is as followed:
char Review_Procedure(day){
尝试做2018年卷子,浏览知识点; √
向武大的哥们借C++从开头到类的继承部分的PPT ; √
阅读PPT;√
while(day>1){
学课本 & 看视频; √
day--;
}
刷期末试卷;
对照答案学习知识;
If(day == 0)return(“Good luck for 220 exam!”)
}
在正式写code前,让我们看看基础知识:
- Function Pointer & Call Back
<1>函数指针
函数回调本质为函数指针作为函数参数,函数调用时传入函数地址,这使我们的代码变得更加灵活,可复用性更强。
常用于动态变化要求高的程序,留有指针接口方便了我们进行更新API,添加修改新功能,比起愚蠢的COPY-AND-PASTE要好多了
这篇文章写的是相当好,比Lumetta上课讲的牛马要好多了
C语言-函数指针(Function Pointer)及进阶 - 简书 (jianshu.com)
核心部分代码:
void compareNumberFunction(int *numberArray, int count, int compareNumber, BOOL (*p)(int, int)) {
for (int i = 0; i < count; i++) {
if (p(*(numberArray + i), compareNumber)) {
printf("%d\n", *(numberArray + i));
}
}
}// Seems that the most significant part is to transpose pointer inside
牛马:
<2>函数指针
int (*findFunction(char *))(int, int);
- findFunction是一个标识符
- findFunction()是一个函数
- findFunction(char *)函数接受一个类型为char *的参数
- *findFunction(char *)函数返回一个指针
- (*findFunction(char*))()这个指针指向一个函数
- (*findFunction(char*))(int, int)指针指向的函数接受两个整形参数
- int (*findFunction(char *))(int, int)指针指向的函数返回一个整形
- 类
C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。
类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员
感觉类和结构体有点像,都是程序员新定义了一个容器,类常被比作【蓝图】,或许是因为他能用于进一步承载对象的属性与操作
例:
class Box
{
public: /* 关键字 public 确定了类成员的访问属性。在类对象作用域内,公共成员在类的外部是可访问的。*/
double length; // 盒子的长度
double breadth; // 盒子的宽度
double height; // 盒子的高度
};
其实,根据继承的思想,我们可能认为类会自动生成几个默认函数:
C++类的六个默认成员函数_cherrydreamsover的博客-优快云博客_类的6个默认成员函数
2, 构造函数&析构函数
3, Crash 的可能原因