C++系列之类与对象(下)

news2024/11/18 22:46:54

在这里插入图片描述

💗 💗 博客:小怡同学
💗 💗 个人简介:编程小萌新
💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞

插入和输出流

//流插入不能写成成员函数,因为Date对象默认占用了第一个参数,就是做了左操作数 //所以写成全局,但是私有成员访问不了
//从左到右流入
返回类型为ostream

//方法一
在这里插入图片描述
//方法二
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
检查函数
在这里插入图片描述

const成员

将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。
//被const修饰的对象 和正常对象 都可以调用 const成员函数 //但是被const修饰的对象不可以直接调用成员函数因为const Date* 用 Date* 接收会发生权限的放大

在这里插入图片描述

取地址操作符重载

//这个是默认成员函数
在这里插入图片描述
在这里插入图片描述

初始化列表

初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。

注意事项

  1. 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)
  2. 类中包含以下成员,必须放在初始化列表位置进行初始化: 引用成员变量 const成员变量 自定义类型成员(且该类没有默认构造函数时)
    //特征:列表是对对象成员定义的地方
    //对自定义类型会调用自己的默认构造,内置类型不处理—— 解决方法:在声明的时候内置类型赋予缺省值
    //定义时不传参就叫默认构造

在这里插入图片描述在这里插入图片描述
//当自定义类型无法自动调用构造函数时,
、
//当初始化列表中有引用类型时(因为形参随函数的销毁而销毁所以形参为引用类型且是变量)
在这里插入图片描述
在这里插入图片描述
//初适化列表不能完全代替函数体赋值
在这里插入图片描述
//A d = 2;优化直接构造
// const d1& aa3 = 2; ;临时变量有常性 d
在这里插入图片描述

explicit关建字

explicit关键字终止隐式转换

static成员

定义:声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化
//局部的静态变量 不会再main创建之前 就初始化
//可以定义静态变量属于类的每个对象共享
//定义 类名+变量名
//静态里不能访问(定义)非静态因为没有this指针
//静态声明不能给缺省值因为没有默认构造函数
//非静态能调用非静态
在类中不受类域和访问限定符的限制

注意事项

  1. 静态成员变量必须在类外定义,定义时不添加static
  2. 静态成员为所有类对象所共享,不属于某个具体的对象,存放在静态区 关键字,类中只是声明
  3. 类静态成员即可用 类名::静态成员 或者 对象.静态成员 来访问
  4. 静态成员函数没有隐藏的this指针,不能访问任何非静态成员
  5. 静态成员也是类的成员,受public、protected、private 访问限定符的限制

友元函数

友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要加friend关键字。

说明:

友元函数可访问类的私有和保护成员,但不是类的成员函数 友元函数不能用const修饰 友元函数可以在类定义的任何地方声明,不受类访问限定符限制
一个函数可以是多个类的友元函数 友元函数的调用与普通函数的调用原理相同

友元类

1.友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。
2.友元关系是单向的,不具有交换性。
//比如Time类和Date类,在Time类中声明Date类为其友元类,那么可以在Date类中直接访问Time
3.类的私有成员变量,但想在Time类中访问Date类中私有的成员变量则不行。 友元关系不能传递
4.如果B是A的友元,C是B的友元,则不能说明C时A的友元。 友元关系不能继承

内部类

概念:如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。
注意:内部类就是外部类的友元类,参见友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所有成员。但是外部类不是内部类的友元。
特性:

  1. 内部类可以定义在外部类的public、protected、private都是可以的。
  2. 注意内部类可以直接访问外部类中的static成员,不需要外部类的对象/类名。
  3. sizeof(外部类)=外部类,和内部类没有任何关系//但是当定义外部类定义了内部类会包括在内

拷贝优化

//当定义和拷贝在一行时会优化,不在一行时不会优化
在这里插入图片描述

匿名对象

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

浅谈人工智能

人工智能的概念和现状 人工智能(Artificial Intelligence,简称AI)是指通过计算机程序和算法来模拟人类智能,包括学习、推理、感知、语言理解、图像识别等方面。自20世纪50年代以来,人工智能领域的研究取得了巨大的进展…

ChatGPT模型大战:讯飞星火认知大模型、百度文心一言能否击败GPT-4(含个人内测体验测试邀请码获取方法,2小时申请成功,亲测有效)

目录 前言讯飞星火内测申请申请方式内测体验登录界面 百度内测申请内测对比基本问答事实性问答科普文写作小红书文案项目计划撰写古文理解模型的常识能力和反事实推理代码理解法律相关广告话术数字排序数值计算推理解题跨语言能力文生图 总结个人感受一、你有使用过这种对话式A…

MySQL无法启动服务--NET HELPMSG 3534

一、问题综述 安装完MySQL,使用 net start mysql 时,出现无法启动服务 二、解决思路 1. 查看一下错误日志 出现了问题,第一步先查看一下错误日志,使用 mysqld --console 打印错误信息,发现是 Failed to find valid …

H264: [ RTP传H264裸流 ] > 如何传(关注点:H264部分)

RTP传h264裸流, 如何传: 可能有几种情况: 1 一帧传一个NALU(NALU很小) 2 一帧传几个NALU(几个NALU很小)[STAP-A] 3 一帧连一个NALU都传不完(一个NALU很大)[FU-A] 如何解决这些问题?? 单一NALU模式:一帧传一个NALU [rtp帧头] [nalu header] [多媒体数据] 一帧传几个NAL…

字节8年测试经验,从功能测试到自动化测试,我整理了这一份2000字进阶学习指南

随着软件行业的不断发展,软件测试技术也在不断地更新,出现了众多的自动化功能测试工具,如HP的Quick Test Professional(最新版本名为UFT)及开源的Selenium。性能测试工具如LoadRunner、JMeter等。 所谓自动化测试&…

OpenCloudOS是哪个Linux版本?哪国的?

OpenCloudOS是哪个Linux版本?哪国的?OpenCloudOS国产的开源Linux操作系统。OpenCloudOS完全兼容CentOS 8。 OpenCloudOS是什么?OpenCloudOS是Linux哪个版本?OpenCloudOS是哪个国家的?OpenCloudOS是一个国产操作系统开…

Day48【动态规划】198.打家劫舍、213.打家劫舍II、337.打家劫舍III

198.打家劫舍 力扣题目链接/文章讲解 视频讲解 动态规划五部曲! 1、定义 dp 数组下标及值的含义 dp[i]:从下标 0 到 i 的房屋里偷,值表示从下标 0 到 i 的房屋里面偷最多可以偷到金额为 dp[i] 2、确定递推公式 要求 dp[i],…

松弛去噪:无源数据的无监督域自适应眼底图像分割

文章目录 Denoising for Relaxing: Unsupervised Domain Adaptive Fundus Image Segmentation Without Source Data摘要本文方法Pseudo Labeling with Class-Dependent ThresholdsLabel Self-correction Towards Effective AdaptationClass-Conditional Label Error Estimation…

Qt复制文件到C盘目录超级管理员权限和避免VirtualStore功能

本以为复制文件是个很简单的事情,没想到居然需要超级管理员权限。 网上一搜有好多教程,例如这个: 给Qt程序添加管理员权限总结(一定有你没见过的方式)_qt管理员权限_百里杨的博客-CSDN博客当我们写了一个Qt程序&…

联想台式机第一次激活提示“请连接Internet进行设置”

一、问题描述 近期给客户新采购了若干台Think系列的联想服务器(台式机),在开机初始化时,选择了语言、键盘模式,然后点击“下一步”,页面提示“请连接Internet进行设置”。 此时右下角的“下一步”是灰色的…

民宿小程序源码搭建 酒店预订小程序源码 完整前后端+安装搭建教程

分享一个民宿小程序源码搭建酒店预订小程序源码,含完整代码程序包和详细的安装搭建教程。 系统为多用户,可以多商家入驻收入驻费用运营,可自用搭建民宿酒店小程序,在线订房管理。 小程序源码下载地址:春哥技术博客获取…

深耕全屋智能场景 鸿雁发布两款iHousePad智慧交互屏新品

作为全屋智能中最核心的应用,智慧屏一直是入口级的产品,在全屋智能场景中起着重要的作用,智慧屏体验的好坏直接关系到全屋智能的交互体验和落地应用。 作为全屋智能赛道早期布局者和重要推动者,鸿雁一直在推动传统开关面板到智能…

【第六章:总线】

目录 知识框架No.0 引言No.1 总线概述一、基本概念二、总线的分类及经典结构1、按照数据传输格式2、按照总线功能(连接的部件)3、按照时序控制方式 三、性能指标1.总线的传输周期(总线周期)2.总线时钟周期3.总线的工作频率4.总线的时钟频率5.总线宽度6.总线带宽7.总线复用8.信号…

spring-data 一统江湖,玩转多种数据源

1、起因 因为要在项目中同时访问redis,mongo和mysql三种数据库,而且因为偏向spring-data,所以都使用了spring-data 在使用的过程中如果不做配置发现会有冲突,这篇文章也是解决这个问题,避免以后遇到同样的问题不知所…

【SAM系列】CAN SAM COUNT ANYTHING? AN EMPIRICAL STUDY ON SAM COUNTING

论文链接:https://arxiv.org/abs/2304.10817 代码链接:https://github.com/vision-intelligence-and-robots-group/count-anything 目的 探索SAM在few-shot setting的object counting的能力。 结论 它目前落后于最先进的few-shot object counting方法…

出门没带本子记的单词|10:20~10:40

susceptible adj 易受影响的 unify v 统一 auditory adj 听觉的 / ˈɔːdətɔːri / combat v 与...搏斗、防止 comfort n 舒适 constrain v 约束、迫使 fringe …

Swift 周报 第二十九期

文章目录 前言新闻和社区担心泄密!外媒:苹果公司限制员工使用ChatGPT苹果公司大幅削减其MR头显销售预期,不足百万台 提案通过的提案正在审查的提案 Swift 论坛1、讨论 SwiftUI 图表、超大数据集和图表叠加2、讨论带有线程安全属性包装器的可发…

【SpringBoot知识点预备】| Xml 和 JavaConfig

目录 一:Xml 和 JavaConfig 1. JavaConfig 2. ImportResource注解 3. PropertyResource注解 一:Xml 和 JavaConfig 1. JavaConfig (1)为什么要使用 Spring Boot? ①因为Spring、SpringMVC 的使用需要大量的配置文…

【Java EE】Springboot

Springboot Springboot 核心功能SpringBoot的相关好处 Springboot 核心功能 1、 可独立运行的Spring项目:Spring Boot可以以jar包的形式独立运行。 2、 内嵌的Servlet容器:Spring Boot可以选择内嵌Tomcat、Jetty或者Undertow,无须以war包形…

python cuda torch验证是否成功安装,版本是否匹配

1 、首先查看自己的显卡型号 根据nvcc-smi查到自己的显卡型号,如下图所示。 本人的电脑显卡型号为:GeForce GT 730 2、查看显卡算力 可以通过以下链接查找 http://www.5ityx.com/cate100/155907.html 可以看到我的显卡算力是3.5 备注:你的显卡计算力必须保证在3.5以上。如…