本文章总结了所有面向对象可能会用到的笔记以及知识,同时也是c++GESP6级的必考题,不推荐0基础阅读,请见谅!
一.面向对象三大特性
C++面向对象的三大特性:封装、继承、多态
1.封装
1.1封装的意义
封装的意义如下:
- 将属性/行为作为整体,表现人、事、物。
- 将属性/行为加以权限以便控制。
1.2封装的格式(语法):
class 类名{
访问权限: 属性 / 行为
};
解释如下:
类名就是类的名字,访问权限一般有三种:
- public 公共权限
- protected 保护权限
- private 私有权限
这三条也就是封装的第二条意义:将属性/行为加以权限以便控制。
2.继承
2.1继承的意义
继承的意义如下:利用继承的技术,减少重复代码。
2.2继承的好处
继承的好处:可以减少重复的代码
2.3继承的语法(格式)
语法(格式):
class 子类 : 继承方式 父类
A 类称为子类 或 派生类;
B 类称为父类 或 基类。
2.4派生类成员分类
派生类中的成员,包含两大部分:
1.从基类继承过来的,2.自己增加的成员。
从基类继承过过来的表现其共性,而新增的成员体现了其个性。
2.5继承方式汇总
相信大家在看语法的时候愣在了继承方式,其实非常easy。
三大继承方式:
- 公共继承
- 保护继承
- 私有继承
3.多态
3.1多态的意义
3.1.1分类
多态分为两类
- 静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名
- 动态多态: 派生类和虚函数实现运行时多态
3.1.2区别
静态多态和动态多态区别:
- 静态多态的函数地址早绑定 - 编译阶段确定函数地址
- 动态多态的函数地址晚绑定 - 运行阶段确定函数地址
3.2总结
多态满足条件
- 有继承关系
- 子类重写父类中的虚函数
多态使用条件
- 父类指针或引用指向子类对象
重写:函数返回值类型、函数名、参数列表完全一致称为重写
4.运算符重载
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。
5.class与struct
在C++中 struct和class唯一的区别在于默认访问权限不同,如下:
- struct 默认权限为公共
- class 默认权限为私有