多态,虚函数,纯虚函数
1.多态:父类的指针或者引用,指向或初始化子类的对象,调用子类对父类重写的函数,进而展开子类的功能。
函数重写
1> 必须有继承关系
2> 子类和父类有同名同类型的函数
3> 父类中的该函数必须是虚函数
2.虚函数
1> 在函数前加上 virtual ---->该函数是虚函数
2> 虚函数满足继承,也就是说父类中该函数是虚函数,继承到子类中,该函数依旧是虚函数,如果子类再被继承,“孙类”中该函数还是虚函数....
多态中,函数重写的原理
其实就是返回,生命周期长的变量的引用。
- 类中有虚函数时,类里就会有一个虚指针,虚指针也满足继承
- 虚指针在类的最前面,虚指针指向了一个虚函数表,虚函数表里记录了虚函数,包括子类对父类重写的函数。
- 虚指针和虚函数表是实现多态的重要机制。
- 3.纯虚函数
-
当父类中虚函数被子类用来重写,且没有定义的意义,这个时候,一般把父类中的虚函数设置成纯虚函数。
-
*****************************************************************************************
-
将引用作为函数参数有何特点
- 引用必须有目标
- 引用的目标一旦指定,不能更改
- 修改引用的值,实际上就是在修改目标的值
- 一个目标可以有多个引用
-
由于引用和目标占用同一块空间,在作为参数传递时,不会开辟新的空间,并且传引用实际上就是传变量的空间,所以也没有值传递和地址传递的区别
-
引用作为函数的返回值,结果是一个左值,所以引用作为函数的返回值可以被赋值。
引用作为函数的返回值,可以返回的内容:
- 全局变量的引用
- 静态局部变量的引用
- 堆区申请的空间
- 实参传递过来的引用
-
常引用就是为了保护目标,不能通过引用被修改
-
***********************************************************
-
结构体和联合体区别
-
结构体和联合体都是包含多个数据类型
-
结构体的字节大小计算,要对齐
-
联合体共用一个