初始化列表
1: 对象实例化的时候,在调用构造函数之前,先按照初始化列表初始化成员,然后再进入
构造函数的执行;
2: 初始化列表的格式:
构造函数(): a(0), b(3.5), c(4.6) {}
初始化列表
- 对象分配内存的时候,在执行构造函数之前来对成员进行初始化;
- 构造函数后面:每个变量初始化,称为初始化列表;
多态
1: 同一个函数名字不同的参数,这个我们称为”多态”;
2: 成员函数多态;
3: 构造函数多态: 实例化的时候,根据参数来选取不同的构造函数;
4: 析构函数没有多态;
5: 多态: 函数是根据名字来判断的,返回值是不受影响的,比如 int test_func()与void test_func()是不能同时存在的,不属于多态
- 函数名字相同,参数不一样称之为多态;
- 多态:
- 其实是俩个函数,只是在调用的时候,根据用户传递的参数来选择版本;
- 同一个名字,同样的参数,不同的返回值是否多态呢? 不是,报错;
- 返回值不能决定多态,编译器无法找到正确的版本,编译器具有二异性,只能报错;
- 构造函数也可以多态:实例化的时候,根据参数来选取不同的构造函数
- 析构函数没有多态; -
C++ 动态内存分配
##
1: 在堆上分配一个C++的对象实例
(1)分配内存
(2)调用构造函数
2: 使用new 在堆上来分配: new 数据类型(基本数据类型,类) new 数组类型[数组个数];
3: 使用delete来释放动态内存;
如果是数组要加上 delete [];
如果你new的是一个实例 delete 指针
如果你new的是一个数组 delete[] 指针
4:你new 一个对象,你要考虑这个对象在什么时候delete,才不会有内存泄漏;
- 在堆上分配一个类的实例;
-
step1:分配内存; -
step2:调用构造函数;
-
-
c/++里面使用new来做动态内存分配; - 使用
delete来释放动态内存;-
step1:调用析构函数; -
step2:把内存还给操作系统; - 当
new一个对象时,要考虑什么时候delete,才不会内存泄露;
-
-
New1000个int的数组-
step1:调用每个元素的析构函数; -
step2:把内存还给操作系统;
-
- 分配10个
homan
c++的struct结构体
1: C++的 struct 兼容C语言的;
2: struct 也是一个类,所以也可以加入成员函数,不过struct默认的权限是public,和class这点不一样;
3: 具备类的特点,还能够兼容C的语法;
-
struct就是一个类; - 兼容c的语法;
-
struct中如果没有指定权限,默认就是public,这就是与class的区别 - 类里面的其它属性,都适合于
struct
引用类型
1: C++有一个新的数据类型,引用类型;
2: 引用是对象内存的”别名”,使用这个别名也能访问对应的内存对象;
3: C语言要修改内存可以传指针,C++要修改内存可以传递变量地址,和变量引用;
- 变量的别名叫做引用,是一种数据类型;
- 定义一个引用:xxxx的引用 变量;
- 跟对应类的大小是一样的,
- 引用变量是内存的别名,;
-
s_link是s的别名,代表的是同一块内存 - 没有办法独立一个变量;
- 指针与引用传递的区别;
- 引用的本质,和变量是同一块内存,只是这块内存的另外名字;
- 操作内存即可传引用,也可传指针,但引用不会发生实例化的重新拷贝;
- 传引用比较高效
总结
1: 掌握c++初始化列表;
2: 掌握c++的多态,和构造函数多态;
3: 掌握c++ new/delete;
4: 掌握struct
5: 掌握C++的引用数据类型;