C++ OOP Feature Conclusion (更新中)
目录
1.类与对象
1.1 基本概念(继承、封装、抽象、多态)
1.2类的声明
1.3成员函数(对象所占空间取决于数据成员,和成员函数无关)
1.4数据成员(不能在类中初始化)
1.5构造与析构函数(自动执行,顺序为栈)
1.6对象的定义
1.7对象数组(析构过程为栈)className instances[size] ={Obj1(),Obj2(...),...}
1.8对象指针(this)
1.9对象成员的访问(成员运算符访问、指向运算符访问、引用)
1.10对象与const
1.11 对象的动态创建与释放 className *instance = new className(params...) ; delete instance
1.12对象的赋值与复制
2.继承与派生(派生会自动屏蔽基类同名成员;)
2.1基本概念(三种继承方式)
2.2 单继承
2.3派生类构成
2.4访问属性
2.5构造与析构(先执行基类构造,后执行基类虚构)
2.6多继承 class className:limitation baseClass1,limitation baseClass2{...}
2.7对象关系(派生类可以赋值给基类)
3.多态与虚函数
3.1基本概念(编译时多态、运行时多态)
3.2向上类型转换
3.3功能早绑定(编译阶段)
3.4功能晚绑定(运行阶段,虚函数:virtual returnType functionName (params...))
3.5虚析构函数
3.6虚函数与重载的区别(p177)
3.7纯虚函数与抽象类
4.友元与静态
4.1基本概念
4.2友元函数 friend returnType functionName(params...) 在类中声明
4.3友元类 friend className
4.4静态数据成员(只能在类中声明,类外初始化)
4.5静态成员函数(没有this指针,不能访问非静态成员,除非传入对象)
5.运算符重载
5.1基本概念
5.2重载规则
6.泛型编程
6.1 基本概念
6.2 函数模板
6.3类模板
7.STL
1.类与对象
1.1 基本概念(继承、封装、抽象、多态)
类
对象
访问限制符
1.2类的声明
1.3成员函数(对象所占空间取决于数据成员,和成员函数无关)
1.4数据成员(不能在类中初始化)
1.5构造与析构函数(自动执行,顺序为栈)
构造函数(系统提供默认构造函数)
参数初始化表
重载
析构函数(只能有一个,不能重载,无参)
全局对象的调用时间
局部对象的调用时间
静态局部对象调用时间
1.6对象的定义
1.7对象数组(析构过程为栈)className instances[size] ={Obj1(),Obj2(...),...}
1.8对象指针(this)
1.9对象成员的访问(成员运算符访问、指向运算符访问、引用)
1.10对象与const
常对象(无法调用非const成员函数) const className instance() | className const instance()
常对象成员
常成员函数(只能访问数据成员,不能修改) returnType functionName(params...) const
常数据成员
指向对象的常指针(不能修改指针)className * const pointerName = &instance
指向常对象的指针(常对象只能用指向常对象的指针,不能使用普通指针)const className * pointerName
1.11 对象的动态创建与释放 className *instance = new className(params...) ; delete instance
1.12对象的赋值与复制
赋值(赋值运算符 = 默认重载,含指针数据成员的类必须自己实现运算符重载,否则产生指针悬挂问题 )object1 = object2
复制(拷贝构造函数:className (const className &obj)) className instance(instance1) | className instance = instance1
两者异同:
2.继承与派生(派生会自动屏蔽基类同名成员;)
2.1基本概念(三种继承方式)
2.2 单继承
2.3派生类构成
2.4访问属性
2.5构造与析构(先执行基类构造,后执行基类虚构)
构造 className(params...):baseClass(paramValue...){}
2.6多继承 class className:limitation baseClass1,limitation baseClass2{...}
2.7对象关系(派生类可以赋值给基类)
3.多态与虚函数
3.1基本概念(编译时多态、运行时多态)
3.2向上类型转换
3.3功能早绑定(编译阶段)
3.4功能晚绑定(运行阶段,虚函数:virtual returnType functionName (params...))
3.5虚析构函数
3.6虚函数与重载的区别(p177)
3.7纯虚函数与抽象类
纯虚函数 virtual returnType functionName(params...) =0
抽象类 (具有一个纯虚函数的类为抽象类,只能作为接口,不能生成对象)
4.友元与静态
4.1基本概念
4.2友元函数 friend returnType functionName(params...) 在类中声明
4.3友元类 friend className
4.4静态数据成员(只能在类中声明,类外初始化)
4.5静态成员函数(没有this指针,不能访问非静态成员,除非传入对象)
5.运算符重载
5.1基本概念
5.2重载规则
6.泛型编程
6.1 基本概念
6.2 函数模板
函数模板定义
函数模板实例化(编译器自动识别)
模板参数(注意:c++不对模板参数做任何类型转换,需要手动转换。不能提供参数默认值)
模板函数重载(指的是模板函数也可以被普通函数重载)
6.3类模板
类模板定义
类模板实例化(className<TypeName> instance)
类模板参数(可以提供参数默认值,只能放在形参表的最右端,否则出错)
7.STL
algorithm.h
deque.h(双向队列)
functiona.h
iterator.h
vector.h(向量)
list.h(双向链表)
map.h(键值映射)
memory.h
numeric.h
queue.h(队列)
set.h(不重复集合和可重复集合)
stack.h(堆栈)
utility.h
相关文章:
C++ OOP Feature Conclusion (更新中)
目录 1.类与对象 1.1 基本概念(继承、封装、抽象、多态) 1.2类的声明 1.3成员函数(对象所占空间取决于数据成员,和成员函数无关) 1.4数据成员(不能在类中初始化) 1.5构造与析构函数(…...
【HTTP】Cookie、Session、Token以及Cookie优化
Cookie、Session、TokenCookie优化Cookie、Session、Token 在开始介绍Cookie安全之前,我们先来了解一下实现授权的方式。 在登录功能中,为了记住登录成功后的信息,在客户端,我们通常会使用Cookie来记录,但是…...
npm之报错:Error: EACCES: permission denied, access ‘/usr/local/lib/node_modules‘
1.报错 363 error [Error: EACCES: permission denied, rename ‘/usr/local/lib/node_modules/tldr’ -> ‘/usr/local/lib/node_modules/.tldr-8nq4AGAt’] { 363 error errno: -13, 363 error code: ‘EACCES’, 363 error syscall: ‘rename’, 363 error path: ‘/usr/…...
「SQL面试题库」 No_30 超过5名学生的课
🍅 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试࿰…...
自定义maven插件,在项目中命令启动springboot并加载当前项目资源
背景 最近在制定团队内公用的基础框架,基于单应用多module的架构思路,使用maven管理项目依赖,在项目中定义了一个springboot模块,该模块依赖具体的业务实现模块,启动后通过扫描路径下的类加载服务,业务开发…...
Linux系统【Centos7】更新内核更新软件详细教程
更新内核: 1. 打开终端,输入命令 sudo yum update,等待更新完成。 2. 重启系统,输入命令 sudo reboot。 3. 在 GRUB 引导界面,选择最新的内核版本,按下回车键进入系统。 4. 在终端中输入命令 uname -r&…...
C++ 中new/delete与malloc/free详解
文章目录前言一、new/delete1. 序言2. 使用方法2.1. new 和 delete 基本语法2.2. new 和 delete 的底层实现原理3. 底层原理3.1. operator new 和 operator delete3.2. new 和 delete 的底层实现原理4. 注意事项5. 总结二、malloc/free1. 序言2. 使用方法2.1. malloc 和 free 基…...
crm软件哪个好?该如何选择?
crm软件哪个好?该如何选择? 首先我们需要明确一下什么是好的CRM系统,优质的CRM系统应该具备以下优势: 1)提高销售效率:通过CRM系统,销售人员可以跟踪客户互动历史和交易记录,了解客…...
蓝桥杯第22天(Python)(疯狂刷题第5天)
题型: 1.思维题/杂题:数学公式,分析题意,找规律 2.BFS/DFS:广搜(递归实现),深搜(deque实现) 3.简单数论:模,素数(只需要…...
软件测试面试常问的问题有哪些?
互联发展是很快的,每年都会有新语言的诞生。 我干测试已经三年了,主要负责web功能测试,java编写接口自动化,APP功能测试,APP 接口自动化(也是用的java),面过得测试也差不多30个&…...
js之文件信息读取篇高级基础
文章目录js之文件信息读取(FileReader)获取文件相关信息的两种方式js原生拖拽事件js之文件信息读取(FileReader) 首先这里面会讲一些知识点 bolb 对象FileReader对象 let blob new Blob([heewwekgewgwer], { type: text/plain …...
SQL Server的死锁说明
死锁指南一、了解死锁二、检测并结束死锁2.1、可能死锁的资源三、处理死锁四、最大限度地减少死锁4.1、以相同的顺序访问对象4.2、避免事务中的用户交互4.3、保持交易简短且在一个批次中4.4、使用较低的隔离级别4.5、使用基于行版本控制的隔离级别4.6、使用绑定连接4.7、停止事…...
关于#define的一些小知识
目录 一,#define的声明格式: 二,#define宏的作用是为了完成替换 #define的替换规则: 三,#define使用时常犯的错误 四,宏与函数的比较 4.1,什么时候使用宏? 4.1,…...
rabbitmq普通集群与镜像集群搭建
1.准备三台centos7主机,并关闭防火墙与selinux 2.安装rabbitmq环境必备的Erlang(以下所有操作三台主机均需要执行) 执行以下命令下载配置erlang yum源 curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash使用yum命…...
session和jwt哪个更好
session和jwtsession优点缺点jwt优点缺点总结session 优点 原理简单,易于学习。用户信息存储在服务端,可以快速封禁某个用户。 缺点 占用服务端内存,硬件成本高。多进程,多服务器时,不好同步-需要使用第三方缓存&a…...
基于TPU-MLIR实现UNet模型部署-决赛答辩02
队伍:AP0200023 目录 初赛 一、 模型导出优化 1.1 直接倒出原始模型并转换 1.2 导出模型前处理 1.2.1 导出Resize 1.2.2 导出归一化 1.3导出模型后处理 1.3.1导出 Resize 与 1.3.2导出 ArgMaxout 1.3.3导出特征转RGB 复赛 一、 确定baseline 二、优化模…...
Maven高级-分模块开发依赖管理
Maven高级-分模块开发&依赖管理1,分模块开发1.1 分模块开发设计1.2 分模块开发实现1.2.1 环境准备1.2.2 抽取domain层步骤1:创建新模块步骤2:项目中创建domain包步骤3:删除原项目中的domain包步骤4:建立依赖关系步骤5:编译maven_02_ssm项目步骤6:将项目安装本地…...
《安富莱嵌入式周报》第308期:开源带软硬件安全认证的PLC设计,开源功率计,可靠PID实现,PR2机器人设计文件全开源,智能手表设计WASP-OS
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1F24y157QE 《安富莱嵌入式周报》第308期:开源带软…...
代码随想录算法训练营第五十六天 | 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结
583. 两个字符串的删除操作 动规五部曲 1、确定dp数组(dp table)以及下标的含义 dp[i][j]:以i-1为结尾的字符串word1,和以j-1位结尾的字符串word2,想要达到相等,所需要删除元素的最少次数。 2、确定递推…...
Sip协议
简介 SIP(Session Initiation Protocol,会话初始协议)是一个用于建立、更改和终止多媒体会话的应用 层控制协议,其中的会话可以是 IP 电话、多媒体会话或多媒体会议。SIP 是 IETF 多媒体数据和控 制体系结构的核心协议࿰…...
告别Python环境依赖!用PyInstaller打包Tkinter/Selenium程序的最佳实践
告别Python环境依赖!用PyInstaller打包Tkinter/Selenium程序的最佳实践 你是否遇到过这样的尴尬场景?精心开发的Python程序在本地运行完美,但分享给同事或客户时,对方却因为缺少Python环境或依赖库而无法使用。尤其当程序涉及图形…...
ZephyrOS--实战Bluetooth LE心率监测
1. 从零开始搭建ZephyrOS开发环境 第一次接触ZephyrOS时,我花了整整两天时间才把开发环境搭好。现在回想起来,其实只要掌握几个关键步骤就能避开那些坑。这里我以nRF52开发板为例,带你快速搭建起心率监测项目的开发环境。 首先需要安装Zephyr…...
AS_BH1750库:BH1750FVI环境光传感器嵌入式驱动设计与工程实践
1. AS_BH1750库概述:面向嵌入式系统的BH1750FVI环境光传感器驱动设计与工程实践BH1750FVI是由ROHM Semiconductor推出的高精度数字环境光传感器(Ambient Light Sensor, ALS),采用IC接口,具备宽动态范围(0.1…...
别再死记硬背了!用这3个真实项目案例,帮你彻底搞懂软件工程导论里的核心概念
从真实项目学软件工程:3个案例拆解核心概念 记得第一次翻开《软件工程导论》时,我被满篇的"瀑布模型"、"软件危机"弄得晕头转向——这些抽象概念和现实开发到底有什么关系?直到参与实际项目后,那些课本上的理…...
3个核心方法实现暗影精灵硬件控制与性能调优:告别原厂软件烦恼
3个核心方法实现暗影精灵硬件控制与性能调优:告别原厂软件烦恼 【免费下载链接】OmenSuperHub 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 一、痛点解析:原厂游戏控制软件的三大致命伤 1.1 隐私安全隐患:网络连接背…...
英飞凌AURIX TC3XX GPIO驱动配置与LED呼吸灯实现
1. 认识AURIX TC3XX的GPIO模块 第一次接触英飞凌AURIX TC3XX系列MCU时,我被它强大的GPIO功能惊艳到了。这不仅仅是一个简单的数字输入输出接口,而是集成了多种高级特性的硬件模块。在实际汽车电子项目中,比如氛围灯控制、状态指示灯等场景&a…...
OpenAI Triton项目中的相关技术对比:多面体编译与调度语言
OpenAI Triton项目中的相关技术对比:多面体编译与调度语言 【免费下载链接】triton Development repository for the Triton language and compiler 项目地址: https://gitcode.com/GitHub_Trending/tri/triton 引言 在深度学习编译器领域,OpenA…...
Step3-VL-10B部署案例:金融APP界面自动化测试,覆盖85%人工回归用例
Step3-VL-10B部署案例:金融APP界面自动化测试,覆盖85%人工回归用例 1. 项目背景与痛点 金融APP的每一次版本更新,都伴随着一场紧张的回归测试。测试团队需要反复验证登录、转账、理财购买、账单查询等几十个核心功能,确保新代码…...
开源动作捕捉新纪元:FreeMoCap低成本解决方案全解析
开源动作捕捉新纪元:FreeMoCap低成本解决方案全解析 【免费下载链接】freemocap Free Motion Capture for Everyone 💀✨ 项目地址: https://gitcode.com/GitHub_Trending/fr/freemocap 问题:动作捕捉技术的高门槛困境 在数字内容创作…...
ESP32上给LVGL做个‘懒加载’:分页与动态读取大文本的实战对比(附代码)
ESP32上LVGL大文本显示优化:分页加载与动态读取的深度对比与实践 在嵌入式设备上处理大文本显示一直是开发者面临的挑战之一。当我们在ESP32这样的资源受限平台上使用LVGL(Light and Versatile Graphics Library)显示超长文本时,如…...
