构造函数存在返回值,指向对象的首地址
如类有虚函数,则该类就有一个虚函数列表,所有该类的对象都共享这个虚函数表
1浅拷贝和深拷贝
1 浅拷贝
仅拷贝对象的所有成员,不包括其引用的对象(例如指针指向的其他内容)
2 深拷贝
除了拷贝成员本身的值之外,还拷贝的成员指向的动态内存区域的内容
2多态(Polymorphism)
指同一接口在不同对象上表现出不同行为。实现了“一个接口,多种方法”的编程范式,大幅提升代码的灵活性和可扩展性。
1)编译时多态,函数重载、运算符重载、模板
2)运行时多态,虚函数 + 继承 + 基类指针/引用。虚函数表,动态绑定机制
类标记为final,表示类无法被继承
方法标记为final,表示子类不能重写该方法
组合优于继承,多用组合少用继承
存在纯虚函数的类是抽象类,不能实例化
3内存对齐
#pragma pack (n) 作用:C编译器将按照n个字节对齐。
#pragma pack () 作用:取消自定义字节对齐方式。
#pragma pack(push, 1) 设置对齐方式, 把原来对齐方式压栈,并设置新的对齐方式
#pragma pack(pop); 恢复设置前的对齐方式
4 内存模型
内存模型分为5个区:栈区、堆区、静态区、常量区、代码区
栈区:存放函数的参数值、局部变量等,由编译器自动分配和释放
堆区:就是通过new、malloc、realloc分配的内存块
静态区:全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后,由系统释放
常量区:常量存储在这里,不允许修改。
代码区:存放函数体的二进制代码。
