当前位置: 首页 > 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…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...