1、虚函数是在父类中加了virtual关键字的函数,子类可以对该函数进行重写,并用父类的指针或引用指向子类的对象实现多态。
纯虚函数就是虚函数头=0的函数。纯虚函数没有功能,拥有该函数的类被称为抽象类。
2、保证detele 父类的指针时既能回收父类指针指向的那一份空间,也能回收子类的那一份空间,防止内存泄漏。
3、const成员必须在类的构造函数的初始化列表中初始化。
static成员必须在类外初始化。
4、标识符:指针使用的是*,引用使用的是&
空间:指针需要开辟一块新空间,而引用使用的是引用目标的空间,不需要新开辟空间
初始化:引用初始化必须赋值,而指针不需要。
大小:引用的大小是和引用对象一致,指针的大小固定是4或8字节。
更改指向:引用一旦被定义,就不可以更改指向,而指针可以更改指向。
使用:指针使用需要加上*,而引用就是和变量名一致
5、类型:new是关键字,而malloc是函数
初始化:new在定义时可以初始化数据,而malloc不可以。
大小指定:new在定义时可以指定大小,而malloc 不可以。
类型:new在定义时可以指定类型,而malloc不可以。
类:类在定义对象时使用new会自动调用该类构造函数,而malloc不可以
6、1、数据用new和malloc在堆区申请空间后,没有使用delete或free释放空间。解决方法:一个new对应一个delete或一个malloc对应一个free
2、父类的指针实现多态后用delete释放空间时没有释放子类的那块空间。解决方法:给父类的析构函数设置为虚析构函数。
3、指针申请堆空间后被重新赋值,解决方法:使用只能指针
7、栈区:存放的是局部变量,该变量随着函数的消亡而消亡,遵从先进后出原则,最先被定义的局部变量最后消亡。
堆区:存放的是被分配空间后的数据,需要手动释放空间
全局/静态区:该类数据生命周期较长,随主函数的运行结束而消亡。
9、栈:遵循先进后出和后进先出原则。
队列:遵循先进先出原则,最先进队的数据最先出队。
链表:存储方式为链式存储的数据结构,通常由头节点和数据节点组成,而节点由数据域和指针域组成。其他还有循环链表,双链表等。
二叉树:存储方式为树形结构,通常由节点、根节点和叶子节点组成。
时间复杂度:计算算法执行的所需时间和输入规模之间的关系。通常有O(1)、O(n)、O(n^2)、O(nlogn)等。使用方式:输入规模n,计算基本操作的执行次数。
空间复杂度:计算算法执行所有空间和输入规模之间的关系,用O表示
使用方法:根据输入规模n、根据变量、数据结构等计算所需要的额外空间。
思维导图