
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
namespace我们叫做命名空间,这是一个关键字,语法格式类似于结构体:namespace name(自己取一个名字)定义变量 函数 类等缺省参数是在函数声明或者定义时,给予形参默认值,如果调用该函数时,没有指定实参则采用给予的形参的默认值,否则使用指定的实参,缺省参数分为全缺省和半缺省。简单例子:C++的函数可以给缺省参数(或者说默认参数),如果传参不给,就用给予的默认值,给了就用指定的,完全
前面其实没少说过,C++有很多功能创造出来都是为了优化升级C语言中的一些功能。比如这样一个场景://单个自定义对象申请空间对比free(p1);delete p2;//多个自定义对象申请空间对比free(p3);//多个自定义对象申请空间并初始化对比free(p5);delete p6;
string部分操作的模拟实现并不是说觉得自己无所不能,可以自己创造一个string类代替库里面的string类,至少目前连C++基本语法都没有学完肯定是没有办法的。模拟实现的重点在于运用前面我们讲的C++入门、类与对象、内存管理等内容辅助实现string类,并且通过模拟实现加深对string类的理解,使使用的时候更加得心应手。
严格来说,我们之前学的string类并不能作为容器,简单来说,我们的string一般就当成顺序表来用了,这个顺序表非常严格,只能用来管理字符序列;除此之外,我们学习string类的时候可以注意到,好多库里面的接口都与c-str有关,也就意味着string和我们C语言是紧密联系的。最好的类比就是我们买的马克杯,倒里面点水没毛病,你不能说倒点茶就不允许,倒点咖啡饮料就不可以,string就好像限量版容
一次是对const对象即使不用const迭代器应该也可以,因为按照我的推理,其实最根本的结点的属性没有被保护;另一次就是对const成员为什么非得用const成员函数产生疑问。总得就是以C的角度对const关键字进行理解,而不是C++,上面我们已经看到了,C++的const从深度上将一系列与const修饰的对象能够产生关系的所有属性进行const修饰;从广度上直接禁止非const引用/指针与con
不管是string、vector、list,底层其实就是申请一块块内存,并且在内存中存储容器,它们的功能都必须从底层一点点实现,难道说能让vector代替list吗?显然是不可能的。而stack底层实现的时候其实还是说选择数组、链表来实现,queue类似,虽然不能直接用数组链表来代替它们,但是注意到只需要数组链表的部分接口即可实现stack、queue的接口,即:需要自己选择底层内存的申请方式,数
头文件 声明 定义都有了昂:大概意思就是FunT这个函数我并没有找到啊,而且是在链接阶段没找到,LNK错误嘛。不妨我们来细细的画一下几个文件的编译,最基本的,明确编译的基本单位是.cpp文件:预处理阶段:(展开头文件 宏替换 条件编译)编译:(转成汇编代码)(检查语法 句法)
继承是面向对象程序设计的一大特点,为代码复用提供了新的层次。它允许我们在已有类型的基础上,设计新的成员变量和成员函数,所产生的新的类型叫做派生类(子类),原来的类型叫做基类(父类)。
以下继承体系中的多态其实是运行中的多态,简称多态。
之前我们说过,自己实现的二叉排序树有一个非常坏的极端情况,那就是插入的数据基本有序,很容易造成二叉树退化成单链,这样logN的查找效率直接就没了。这样比链表复杂,没链表方便,用起来有什么用?因此,在二叉排序树的基础上进一步加以限定升级得到AVL树。







