C++内存模型
函数
函数与编译器
类
成员变量
class 内部通过
static 修饰变量时,表示该变量为静态成员变量,必须在类外定义
static const 修饰变量时,表示该变量为静态成员常量,可以在类内初始化,或者在类外初始化
static constexpr 修饰变量时,表示该变量为静态成员常量,必须在类内初始化,并要求编译期间的其它常量来初始化该常量。
类:默认函数: 构造函数:构造函数作用是对对象进行初始化
有初始化列表和构造函数体内赋值两种方式
构造函数 没有返回类型 名称和类同名 参数可以有,也可以没有。
构造函数 MyClass() {} // 默认构造函数 ,没有参数的构造函数称为默认构造函数,也称为无参构造函数
析构函数 ~MyClass() {} // 析构函数
复制函数 MyClass(const MyClass& other) {} //
移动函数 MyClass(MyClass&& other) {} // 移动构造函 两个&操作符, 移动构造函数接收的是“右值引用”的参数。
赋值操作符 : 赋值操作符可以通过制定不同类型的右操作数而重载。 赋值和复制经常是一起使用的
移动赋值函数
拷贝构造函数: 当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用
移动构造函数: 临时对象(右值)。用到临时对象的时候就会执行移动语义
嵌套类 Nested Class- 对类进行嵌套通常是为了帮助实现另一个类
类A中 声明的类B被称为嵌套类(nested class)
类A的成员函数可以创建和使用 嵌套类B的 对象
对类进行嵌套和包含并不同。
包含意味着将类C对象作为类A的成员。
而对类B进行嵌套不创建类成员,而是定义了一种类型,该类型仅仅在包含嵌套类声明的类A中有效。
构造函数参数列表与构造函数体之间使用冒号开始,逗号分隔的方式初始化数据成员。这种方式就是构造函数初始化器
使用:
访问时通过“类名::变量名”方式访问该静态成员变量。
类与编译器
成员变量
静态成员变量的存储位于全局\静态存储区,
嵌套类-内存分配:
结构体
C+++ 结构 内部的成员变量以及成员函数,默认具有public的属性
成员函数 可以包括特殊的函数:构造函数和析构函数。
C++中,结构体和类之间的区别就是默认的访问权限不同
二进制文件解析
1.字节顺序,大小和对齐方式。
参考
https://docs.python.org/zh-cn/3.8/library/struct.html
标签:初始化,函数,成员,C++,嵌套,内存,变量,构造函数
From: https://www.cnblogs.com/ytwang/p/18136296