枫の个人主页
你不能改变过去,但你可以改变未来
算法/C++/数据结构/C
Hello,这里是小枫。C语言与数据结构和算法初阶两个板块都更新完毕,我们继续来学习C++的内容呀。C++是接近底层有比较经典的语言,因此学习起来注定枯燥无味,西游记大家都看过吧~,我希望能带着大家一起跨过九九八十一难,降伏各类难题,学会C++,我会尽我所能,以通俗易懂、幽默风趣的方式带给大家形象生动的知识,也希望大家遇到困难不退缩,遇到难题不放弃,学习师徒四人的精神!!!故此得名【C++游记】
话不多说,让我们一起进入今天的学习吧~~~
1>>内存管理
师傅不怕,这是小怪~~
C内存管理的方式有malloc、calloc、realloc、free。而C++有自己的一套内存管理,那就是new和delete,它跟C的区别是什么呢?那就是在自定义类型上,在用new申请一块空间时,会自动调用自定义类型的构造函数,delete在释放空间时,会调用析构函数。
#include<iostream>using namespace std;void Test() {int* ptr1 = new int;//动态申请一块int类型的空间int* ptr2 = new int(1);//动态申请一块int类型的空间,初始化为1int* ptr3 = new int[5];//动态申请五块int类型的空间delete ptr1;delete ptr2;delete[] ptr3;}int main() {Test();return 0;}
new在底层调用operator new来申请空间的,而operator new是malloc的封装。 delete在底层调用operator delete来申请空间的,而operator delete是free的封装。
区别:
1.malloc和free是函数,new和delete是操作符
2.malloc申请空间不会初始化,new可以初始化
3.malloc申请空间需要手动计算大小,new只需要知道什么类型,它会自动计算大小,若多个对象,就在[]中指定对象个数即可。
4.前者不会调用构造与析构,而后者会调用。
2>>模板
师傅不怕,也是小怪,今天都是小怪啦~~~
#include<iostream>using namespace std;template <class T>//这里可以写class,也可以写typenameT Add(const T& x, const T& y) {return x + y;}void Test() {int a = 1;int b = 2;double c = 3.3, d = 4.4;cout << " a= " << a << " b= " << b << " c= " << c << " d= " << d << endl;int sum1 = Add(c,d);//上面的T会根据传的类型进行变化,传int,T就是intcout << sum1 << endl;//当然也可以显示实例化double sum2 = Add<double>(c, d);cout << sum2<<endl;}int main() {Test();return 0;}
若是有一个模板,还有一个自己写的确定类型的函数,编译器会选择已经写好的,毕竟有现成就用现成的。用模板的话C++底层会先进行推演,直到找到匹配的类型,才会调用,对编译器来说,也是能偷懒就偷懒。
3>>STL
STL是C++标准库的重要组成部分,而STL里最重要的就是算法与数据结构,它是一个包含算法与数据结构的框架
算法包括find、swap、reserve、sort、merge等等
容器包括string、vector、list、deque、map、set、multimap、multilset等等
所以我们要学习它,它的重要性毋庸置疑。在面试中也包括它很多部分。这里先介绍,在之后的学习中我们慢慢学习它!!
4>>结语
今日C++到这里就结束啦,如果觉得文章还不错的话,可以三连支持一下。感兴趣的宝子们欢迎持续订阅小枫,小枫在这里谢谢宝子们啦~小枫の主页还有更多生动有趣的文章,欢迎宝子们去点评鸭~C++的学习很陡,时而巨难时而巨简单,希望宝子们和小枫一起坚持下去~你们的三连就是小枫的动力,感谢支持~