记录C++语言知识学习的过程
文章目录
C++语言知识
一、C++语言基础
1.内存分区
可分为四个大类:代码区、全局/静态存储区、堆区、栈区(低地址向高地址递增)
- 代码区(.text段)
存储函数的执行代码,不可修改,但可执行;编译后的二进制代码存放在此处;存放函数体(类的成员函数、全局函数); - 全局/静态存储区
存放全局变量、静态变量和字符串常量;程序编译时分配,程序运行结束由操作系统自动回收; - 堆区(heap)
动态申请的内存空间,由malloc分配的内存块;由程序员控制堆内存的分配和释放,如果程序结束后还没有释放,则由系统自动释放;可动态扩张和缩减,分配内存是扩张,释放内存缩减,方向为从低地址向高地址 - 栈区(stack)
存放函数的局部变量、函数形参和返回地址等,由编译器自动回收和释放;方向为从高地址指向低地址;
2.内存对齐
3.内存碎片
malloc、free、new、delete的区别,为什么需要有new、delete?
4.static关键字的作用、场景
二、类与数据抽象
1.构造函数与析构函数的调用时机
构造函数调用顺序:
- 基类成员对象的构造函数
- 基类的构造函数
- 派生类成员对象的构造函数
- 派生类的构造函数
析构函数的调用顺序:
- 派生类的析构函数
- 派生类的对象成员的析构函数
- 基类的析构函数
- 基类的对象成员的析构函数
2.类之间继承方式的权限问题
继承方式:public、protected、private
- public继承:基类成员在派生类中的访问权限保持不变,即基类成员的访问权限,在派生类中仍然保持不变(public还是public)
- private继承:基类成员在派生类中的访问权限全变成私有(private)权限;
- protected继承:基类成员权限为public在派生类中的访问权限变为protected;基类成员权限为private和protected在派生类中的访问权限保持不变
基类成员权限 | public继承 | private继承 | protected继承 |
---|---|---|---|
public | public | private | protected |
private | private | private | private |
protected | protected | private | protected |