C++复习
2020-11-08 本文已影响0人
StevenHD
一、创建类对象

二、命令行



三、头文件的区别
-
#include <iostream>
——尖括号意味着引入的文件是在系统目录下
-
#include "Human.h"
——双引号意味着引入的文件是在自己的目录下
四、命名空间
防止库与库之间不会相互污染
。
五、宏的引入
- 头文件中会引入
ifndef
这个宏,目的是为了防止多次引入这个头文件。 - 还会有一个宏
#define XXX
,两个连起来的意思是——如果没有定义这个宏,那么我们就定义这个宏
。下次引用这个头文件
的时候,发现这个宏已经存在了,就不引入了。
六、继承


- 子类可以使用父类中的东西,但是父类是不可以使用子类中的东西的,这个跟编译器分配
内存空间
有关。
七、多态

实现
多态
是通过一个虚表
来实现的。
八、内存管理与指针
8.1 内存地址空间
- 32位寻址,每次获得的地址空间都是
4个字节
。如果存储5只会占一个字节,因为一个字节可以存放最大256的值,另外3个字节
就浪费掉了,int型数字存放在4个字节中的最后一个字节,char型数则是存放在4个字节中的第一个字节——
内存地址空间
每个地址之间相隔
4个字节
8.2 堆空间与栈空间
- 堆空间和栈空间都属于
数据
- 堆空间是
低地址向高地址
增长的 - 栈空间是
高地址向低地址
增长的
这样可以避免地址使用的冲突,因为两个空间都是在往
中间
发展。
堆空间与栈空间
8.3 内存的申请与释放
九、深拷贝与浅拷贝
9.1 什么是浅拷贝
一个变量含有指针,只拷贝这个变量,但是指针指向的内容并不进行拷贝。这样会导致指针指向区域被共享,拷贝前的变量和拷贝后的变量会指向同一个地址。
会导致内存释放会释放2次,导致程序崩溃。要不然就是都不释放,那就是内存泄漏。
9.2 什么是深拷贝
其实深拷贝主要是新申请了一块内存空间
——
