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

类和对象二

一、运算符重载

为了使自定义类型可以使用加减等运算符,CPP提供了一个功能叫运算符重载。

关键字:operator+操作符

运算符重载最好定义在类对象里,这也可以避免访问不到私有成员的问题。

代码演示:

在类里定义之后,我们就可以使用==来判断两类是否相等当然,也可以以函数的方式访问:

两种访问方式完全相同,但是我更喜欢第一种。

另外,还有五个不能重载的运算符:

.*   ,   ::  ,   sizeo  ,  ?:  ,   .

赋值运算符重载要实现从右到左赋值的功能,我们要给operator带返回值

加了返回值之后,支持连续赋值

与赋值重载的区别就是:运算符重载是针对两以定义好的对象,而拷贝构造针对未定义的对象。

前后++如何用运算符重载:

前++是先加后用:

而后置++,先用后加,会在传值时多个int类型数据传过去得以区分:

<<运算符重载:

我们知道,cout << "" << endl;可以打印数据到屏幕,但是我们如何针对类来写一个打印函数,我们可以给<< 重载:

在类里写函数约等于内联函数,不进符号表,要直接在头文件中定义。

在外面写const,默认给*this加const:

使其无法被修改。

二,初始化列表

如果在私有里加了const,会使其无法修改而无法初始化,这个时候可以使用初始化列表来解决这个问题:

用到符号  :  ,来定义

有三种东西必须使用列表初始化:

const

引用

自定义对象(会调用它自己的默认构造)(如果加了参数没给缺省,就在列表中给个数字)

初始化列表的顺序是看私有域里的顺序而不是看列表的顺序。

三、编译器自带的优化

加了引用之后不优化

关键字:explicit加构造

不允许隐式类型转换,针对单参数,在C98里不支持多参

在C11中支持,例:

可以用花括号来包含多参数。

尽量拷贝构造时接收返回值,减少消耗。

尽量返回匿名对象。

四、static成员

用static修饰的类型不属于某个对象,而是属于所有类/整个类

由于是公有的所不允许拥有缺省值。

也有静态成员函数,特点就是无this指针,可以访问static成员。

五、匿名对象

特点:声明周期只在这一行

可以一次性使用中发挥作用。

六、友元函数

可以突破封装访问私有

关键字:friend

不宜多用,破坏了封装的限制,不能用const修饰,一个函数可以是多个类的友元,类也可以是类的友元函数

内部类,是在类中定义的类,除了受内域u限制其他都一样,计算大小时不把它作为计算对象:

相关文章:

类和对象二

一、运算符重载 为了使自定义类型可以使用加减等运算符&#xff0c;CPP提供了一个功能叫运算符重载。 关键字&#xff1a;operator操作符 运算符重载最好定义在类对象里&#xff0c;这也可以避免访问不到私有成员的问题。 代码演示&#xff1a; 在类里定义之后&#xff0c;…...

GD32 HID键盘矩阵键盘发送数据时,一直发送数据问题处理

这个问题找了两三天,开始并不认为是示例程序的问题,只是感觉是自己代码问题。 这个解决流程大概是: 先调好矩阵键盘=> 调用发送函数。 就是因为调用时,一直发送数据,我也在按键抬起做了操作,始终不行。 最后,发现时示例代码中有个 空闲中断 引起的。 udev->reg…...

小程序地理位置权限申请+uniapp调用uni.getLocation

文章目录 一、小程序地理位置权限申请二、uniapp调用uni.getLocation 一、小程序地理位置权限申请 需要确保小程序类目已经填写 点击左侧导航栏找到最后的“设置”——“基本设置”——“前往填写” 在开发管理——接口设置——地理位置中可以看到&#xff1a; 即可点击想要申…...

后台权限控制及动态路由

需求 后台系统需要能实现不同的用户权限可以看到不同的功能。 用户只能使用他的权限所允许使用的功能。 功能设计 之前在我的SpringSecurity的课程中就介绍过RBAC权限模型。没有学习过的可以去看下 RBAC权限模型 。这里我们就是在RBAC权限模型的基础上去实现这个功能。 表分…...

云计算:Linux 部署 OVS 集群(控制端)实现OpenFlow

目录 一、实验 1.环境 2.Linux 部署 OVS 集群&#xff08;控制端&#xff09; 3.控制端对接服务端OVS网元 4.服务端OVS添加流表 5.服务端删除OVS 二、问题 1. ODL如何查找已安装插件 2.查看流表显示不全 3.如何删除OVS流表 一、实验 1.环境 (1) 主机 表1 宿主机 主…...

使用/api/put保存数据到OpenTSDB,报204错误

错误信息 HttpResponseProxy{HTTP/1.1 204 No Content [Content-Type: application/json; charsetUTF-8, Content-Length: 0]} 错误原因 在OpenTSDB中&#xff0c;使用/api/put保执行写入操作&#xff0c;得到204响应&#xff0c;表示已经成功写入数据库。...

Open3D kmeans聚类(马氏距离,Python版本)

文章目录 一、简介二、算法步骤三、代码实现四、实现效果参考资料一、简介 在诸多的聚类方法中,K-Means聚类方法是属于“基于原型的聚类”(也称为原型聚类)的方法,此类方法均是假设聚类结构能通过一组原型刻画,在现实聚类中极为常用。通常情况下,该类算法会先对原型进行初始…...

python抠图程序

import cv2 import numpy as np def color_threshold(image, lower, upper): hsv_image cv2.cvtColor(image, cv2.COLOR_BGR2HSV) mask cv2.inRange(hsv_image, lower, upper) result cv2.bitwise_and(image, image, maskmask) return result # 读取图片…...

Android13 CameraServer启动流程

代码入口 frameworks/av/camera/cameraserver 里面包含了四个文件 我们先来看看Android.bp的内容 package {// See: http://go/android-license-faq// A large-scale-change added default_applicable_licenses to import// all of the license_kinds from "frameworks_a…...

如何升级node.js版本

升级Node.js可以通过多种方式来完成&#xff0c;以下是四种常见的方法&#xff1a; 方法一&#xff1a;使用Node.js官方安装程序 访问Node.js的官方网站&#xff0c;下载对应你操作系统的最新版本安装程序。通常&#xff0c;你可以 https://nodejs.org/en/download 找到你需…...

Excel---一个工作簿中的多个sheet合并成一个PDF

0 Preface/Foreword 1 操作方法 1.1 方法一 文件》 导出 》创建PDF/XPS 》 选项 》发布内容 》“整个工作簿” 1.2 方法二 文件》 打印》 打印机选项中&#xff0c;选择一种PDF阅读器 》设置选项中&#xff0c;选择打印整个工作簿。...

结合文本的目标检测:Open-GroundingDino训练自己的数据集

1、简单介绍 Open-GroundingDino是GroundingDino的第三方实现训练流程的代码&#xff0c;因为官方GroundingDino没有提供训练代码&#xff0c;只提供了demo推理代码。 关于GroundingDino的介绍可以看论文&#xff1a;https://arxiv.org/pdf/2303.05499.pdf GroundingDino的G…...

分布式锁-redission锁的MutiLock原理

5.5 分布式锁-redission锁的MutiLock原理 为了提高redis的可用性&#xff0c;我们会搭建集群或者主从&#xff0c;现在以主从为例 此时我们去写命令&#xff0c;写在主机上&#xff0c; 主机会将数据同步给从机&#xff0c;但是假设在主机还没有来得及把数据写入到从机去的时…...

MySQL索引、B+树相关知识汇总

MySQL索引、B树相关知识汇总 一、有一个查询需求&#xff0c;MySQL中有两个表&#xff0c;一个表1000W数据&#xff0c;另一个表只有几千数据&#xff0c;要做一个关联查询&#xff0c;如何优化&#xff1f;1、为关联字段建立索引二、小表驱动大表 二、b树和b树的区别1、更高的…...

相机模型浅析

相机模型 文章目录 相机模型四个坐标系针孔相机模型世界坐标系到相机坐标系相机坐标系到图像坐标系图像坐标到像素坐标 四个坐标系 ①世界坐标系&#xff1a;是客观三维世界的绝对坐标系&#xff0c;也称客观坐标系。因为数码相机安放在三维空间中&#xff0c;我们需要世界坐标…...

国芯科技(C*Core)双芯片汽车安全气囊解决方案

汽车安全气囊是20世纪汽车上的十大发明之一&#xff0c;是目前汽车的法定标准配置&#xff0c;成为汽车驾乘人员生命安全的保护神。随着人们对汽车安全性要求的进一步提高&#xff0c;已形成前排驾驶员气囊、前排副驾驶员气囊、前排侧气囊、后排侧气囊、膝部气囊、安全气帘等等…...

牛客周赛 Round 39(A,B,C,D,E,F,G)

比赛链接 官方题解&#xff08;视频&#xff09; B题是个贪心。CD用同余最短路&#xff0c;预处理的完全背包&#xff0c;多重背包都能做&#xff0c;比较典型。E是个诈骗&#xff0c;暴力就完事了。F是个线段树。G是个分类大讨论&#xff0c;出题人钦定的本年度最佳最粪 题目…...

解锁区块链技术的潜力:实现智能合约与DApps

在数字时代&#xff0c;区块链技术正迅速成为重塑多个行业的革命性力量。从金融服务到供应链管理&#xff0c;再到数字身份验证&#xff0c;区块链提供了一种去中心化、安全和透明的数据处理方式。在本文中&#xff0c;我们将深入探讨区块链技术&#xff0c;特别是智能合约和去…...

MAC OS关闭SIP(navicat 无法保存密码)

最近安装navicat&#xff08;16.3.7&#xff09;时,安装后无法保存密码,保存密码会报错如下&#xff1a; 因为用的破解版&#xff0c;一开始是打不开的&#xff0c;用自带的修复软件修复后就可以打开了&#xff0c;但是保存密码就会报错&#xff0c;按照网上的一些操作 1、卸载…...

阿里云服务器带宽价格全解析,附报价单

阿里云服务器公网带宽怎么收费&#xff1f;北京地域服务器按固定带宽计费一个月23元/M&#xff0c;按使用流量计费0.8元/GB&#xff0c;云服务器地域不同实际带宽价格也不同&#xff0c;阿里云服务器网aliyunfuwuqi.com分享不同带宽计费模式下带宽收费价格表&#xff1a; 公网…...

开源物联网平台SiteWhere:架构解析与实战部署指南

1. 项目概述&#xff1a;一个开源的物联网应用平台如果你正在寻找一个能够快速搭建、灵活扩展&#xff0c;并且能统一管理成千上万台设备的物联网平台&#xff0c;那么你很可能已经听说过或者正在评估 SiteWhere。作为一个在物联网领域摸爬滚打了多年的从业者&#xff0c;我见过…...

品牌AI印相失效90%源于这7个参数误设,可口可乐级商业输出必须校准的4项色彩/构图硬指标

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney Coca Cola印相失效的底层归因诊断 Midjourney v6 及后续版本中&#xff0c;针对品牌标识&#xff08;如 Coca-Cola 经典红白波浪字体与动态弧线&#xff09;的“印相”&#xff08;prompt i…...

问卷设计对比实测:手工瞎编≠通用 AI≠学术专用!虎贲等考 AI 重新定义可发表级问卷

在毕业论文、课程论文、期刊实证研究中&#xff0c;问卷是决定数据是否有效、模型能否跑通、论文能否过关的核心一环。但 90% 的学生都在用错误方式做问卷&#xff1a;手工凭感觉出题、网上随便抄量表、用通用 AI 随意生成…… 结果要么信效度不达标&#xff0c;要么数据无法分…...

3分钟拯救你的B站缓存视频:m4s-converter让珍贵回忆永不消失

3分钟拯救你的B站缓存视频&#xff1a;m4s-converter让珍贵回忆永不消失 【免费下载链接】m4s-converter 一个跨平台小工具&#xff0c;将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否遇到过这样的困扰…...

STM32CubeMX呼吸灯实战:用TIM3的PWM模式驱动LED(附完整代码与重映射避坑指南)

STM32CubeMX呼吸灯实战&#xff1a;用TIM3的PWM模式驱动LED&#xff08;附完整代码与重映射避坑指南&#xff09; 呼吸灯效果是嵌入式开发中经典的PWM应用场景&#xff0c;不仅能直观展示定时器功能&#xff0c;还能为产品增添交互美感。对于STM32开发者而言&#xff0c;利用Cu…...

基于MCP协议构建垂直领域AI知识服务:猴头菇茶MCP服务器实战

1. 项目概述与核心价值最近在折腾AI Agent的开发&#xff0c;发现一个挺有意思的项目&#xff0c;叫jackrain19743/hou-tea-mcp-server。乍一看这个名字&#xff0c;可能会有点摸不着头脑&#xff0c;“hou-tea”是啥&#xff1f;其实这是一个基于Model Context Protocol&#…...

OpenSceneGraph 3.6.5 源码编译实战:从依赖配置到项目集成的完整指南

1. 环境准备&#xff1a;搭建编译OSG的基础舞台 在开始编译OpenSceneGraph 3.6.5之前&#xff0c;我们需要先搭建好开发环境。就像盖房子需要打好地基一样&#xff0c;环境配置决定了后续编译过程的顺利程度。我曾在多个项目中编译过不同版本的OSG&#xff0c;发现环境配置不当…...

Andorid下给PDF盖骑缝章的方法—安卓手机批量盖骑缝章的方法

Andorid下给PDF盖骑缝章的方法&#xff0c;安卓手机批量盖骑缝章的方法。一、准备印章图片1。不需要制作为透明的印章&#xff0c;用白底Png格式图片即可&#xff0c;白底图片盖章时软件会自动透明并融合。2。印章边线与图片四边不要有空隙&#xff0c;如下&#xff1a;错误的&…...

详解 Deepsec:Vercel 开源 AI 代码安全防护工具的技术架构与实现原理

摘要在 AI 大模型深度融入软件开发全链路的今天&#xff0c;代码安全防护正面临 “复杂逻辑漏洞难发现、传统工具误报率高、源码隐私保护难” 三重核心挑战。Vercel 开源的 Deepsec 作为一款Agent 驱动的本地化 AI 安全防护工具&#xff0c;跳出传统 SAST&#xff08;静态应用安…...

别再只调pool_size了!MaxPool2D的strides和padding参数实战避坑指南(附TensorFlow/Keras代码)

MaxPool2D参数深度解析&#xff1a;如何用strides和padding精准控制特征图尺寸 在构建卷积神经网络时&#xff0c;池化层的参数设置往往被当作"调参黑箱"一带而过。许多开发者习惯性地只调整pool_size&#xff0c;却对strides和padding参数的微妙影响缺乏足够重视。这…...