建议:先看第八总结——我的个人总结。
一、C++基础(3个月)
1、面向对象的三大特性:封装、继承、多态
封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是:代码重用。而多态则是为了实现另一个目的——接口重用。
2、类的访问权限:private、protected、public
3、类的构造函数、析构函数、赋值函数、拷贝函数 ## 4、移动构造函数与拷贝构造函数对比
4、C++11新出的,可以不用管。
5、深拷贝与浅拷贝的区别
浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,
深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存
6、空类有哪些函数?空类的大小?
构造函数、析构函数、拷贝构造函数、赋值函数。大小1字节
7、内存分区:全局区、堆区、栈区、常量区、代码区
8、C++与C的区别
a.属性
new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持c。
b.参数
使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸
分配失败
new内存分配失败时,会抛出bac_alloc异常。malloc分配内存失败时返回NULL。
9、struct与class的区别
默认的继承访问权。class默认的是private,strcut默认的是public。
“class”这个关键字还用于定义模板参数,就像“typename”。但关键字“struct”不用于定义模板参数
10、struct内存对齐
步骤一:前面单元的大小必须是后面单元大小的整数倍,如果不是就补齐
步骤二:整个结构体的大小必须是最大字节的整数倍
11、new/delete与malloc/free的区别
malloc开辟空间类型大小需手动计算,new是由编译器自己计算;
(2)malloc返回类型为void*,必须强制类型转换对应类型指针,new则直接返回对应类型指针;
(3)malloc开辟内存时返回内存地址要检查判空,因为若它可能开辟失败会返回NULL;new则不用判断,因为内存分配失败时,它会抛出异常bac_alloc,可以使用异常机制;
12、内存泄露的情况
13、sizeof与strlen对比
sizeof() 是可用来计算字符串的总长度,包括\0,而strlen()计算不包含\0的字符串的长度,遇到 \0 就会被截断。
sizeof()指出整个数组的长度;而strlen()返回的是存储在数组中的字符串的长度ÿ