当前位置: 首页 > news >正文

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 基本概念&#xff08;继承、封装、抽象、多态&#xff09; 1.2类的声明 1.3成员函数&#xff08;对象所占空间取决于数据成员&#xff0c;和成员函数无关&#xff09; 1.4数据成员&#xff08;不能在类中初始化&#xff09; 1.5构造与析构函数&#xff08…...

【HTTP】Cookie、Session、Token以及Cookie优化

Cookie、Session、TokenCookie优化Cookie、Session、Token 在开始介绍Cookie安全之前&#xff0c;我们先来了解一下实现授权的方式。 在登录功能中&#xff0c;为了记住登录成功后的信息&#xff0c;在客户端&#xff0c;我们通常会使用Cookie来记录&#xff0c;但是&#xf…...

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名学生的课

&#x1f345; 1、专栏介绍 「SQL面试题库」是由 不是西红柿 发起&#xff0c;全员免费参与的SQL学习活动。我每天发布1道SQL面试真题&#xff0c;从简单到困难&#xff0c;涵盖所有SQL知识点&#xff0c;我敢保证只要做完这100道题&#xff0c;不仅能轻松搞定面试&#xff0…...

自定义maven插件,在项目中命令启动springboot并加载当前项目资源

背景 最近在制定团队内公用的基础框架&#xff0c;基于单应用多module的架构思路&#xff0c;使用maven管理项目依赖&#xff0c;在项目中定义了一个springboot模块&#xff0c;该模块依赖具体的业务实现模块&#xff0c;启动后通过扫描路径下的类加载服务&#xff0c;业务开发…...

Linux系统【Centos7】更新内核更新软件详细教程

更新内核&#xff1a; 1. 打开终端&#xff0c;输入命令 sudo yum update&#xff0c;等待更新完成。 2. 重启系统&#xff0c;输入命令 sudo reboot。 3. 在 GRUB 引导界面&#xff0c;选择最新的内核版本&#xff0c;按下回车键进入系统。 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软件哪个好&#xff1f;该如何选择&#xff1f; 首先我们需要明确一下什么是好的CRM系统&#xff0c;优质的CRM系统应该具备以下优势&#xff1a; 1&#xff09;提高销售效率&#xff1a;通过CRM系统&#xff0c;销售人员可以跟踪客户互动历史和交易记录&#xff0c;了解客…...

蓝桥杯第22天(Python)(疯狂刷题第5天)

题型&#xff1a; 1.思维题/杂题&#xff1a;数学公式&#xff0c;分析题意&#xff0c;找规律 2.BFS/DFS&#xff1a;广搜&#xff08;递归实现&#xff09;&#xff0c;深搜&#xff08;deque实现&#xff09; 3.简单数论&#xff1a;模&#xff0c;素数&#xff08;只需要…...

软件测试面试常问的问题有哪些?

互联发展是很快的&#xff0c;每年都会有新语言的诞生。 我干测试已经三年了&#xff0c;主要负责web功能测试&#xff0c;java编写接口自动化&#xff0c;APP功能测试&#xff0c;APP 接口自动化&#xff08;也是用的java&#xff09;&#xff0c;面过得测试也差不多30个&…...

js之文件信息读取篇高级基础

文章目录js之文件信息读取&#xff08;FileReader&#xff09;获取文件相关信息的两种方式js原生拖拽事件js之文件信息读取&#xff08;FileReader&#xff09; 首先这里面会讲一些知识点 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的一些小知识

目录 一&#xff0c;#define的声明格式&#xff1a; 二&#xff0c;#define宏的作用是为了完成替换 #define的替换规则&#xff1a; 三&#xff0c;#define使用时常犯的错误 四&#xff0c;宏与函数的比较 4.1&#xff0c;什么时候使用宏&#xff1f; 4.1&#xff0c;…...

rabbitmq普通集群与镜像集群搭建

1.准备三台centos7主机&#xff0c;并关闭防火墙与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 优点 原理简单&#xff0c;易于学习。用户信息存储在服务端&#xff0c;可以快速封禁某个用户。 缺点 占用服务端内存&#xff0c;硬件成本高。多进程&#xff0c;多服务器时&#xff0c;不好同步-需要使用第三方缓存&a…...

基于TPU-MLIR实现UNet模型部署-决赛答辩02

队伍&#xff1a;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&#xff0c;分模块开发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

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; https://www.bilibili.com/video/BV1F24y157QE 《安富莱嵌入式周报》第308期&#xff1a;开源带软…...

代码随想录算法训练营第五十六天 | 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结

583. 两个字符串的删除操作 动规五部曲 1、确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i][j]&#xff1a;以i-1为结尾的字符串word1&#xff0c;和以j-1位结尾的字符串word2&#xff0c;想要达到相等&#xff0c;所需要删除元素的最少次数。 2、确定递推…...

Sip协议

简介 SIP&#xff08;Session Initiation Protocol&#xff0c;会话初始协议&#xff09;是一个用于建立、更改和终止多媒体会话的应用 层控制协议&#xff0c;其中的会话可以是 IP 电话、多媒体会话或多媒体会议。SIP 是 IETF 多媒体数据和控 制体系结构的核心协议&#xff0…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

基于当前项目通过npm包形式暴露公共组件

1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹&#xff0c;并新增内容 3.创建package文件夹...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...