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

news/2025/2/4 6:44:48/

在这里插入图片描述

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

插入和输出流

//流插入不能写成成员函数,因为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.ppmy.cn/news/73780.html

相关文章

2023中兴软件类笔试

1.下列Python代码:将近似输出什么? import numpy as np print np.sqrt(6*np.sum(1/np.arange(1,1000000, dtypenp.float)**2))这段代码是用来计算圆周率的巴塞尔问题(Basel problem)的近似值,输出结果将近似为3.14159…

Linux Ubuntu配置Anaconda与Python的方法

本文介绍在Linux Ubuntu操作系统的电脑中,安装Anaconda环境与Python语言的方法。 在之前的文章Win10中Anaconda及Python的下载与安装方法(https://blog.csdn.net/zhebushibiaoshifu/article/details/122642187)中,我们介绍了在Win…

NFTScan:05.15~05.21 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.05.15 ~ 2023.05.21 NFT Hot News:NFT 热点资讯 01/ DID 解决方案提供商 Lifeform 以 3 亿美元估值完成 IDG Capital 领投的 B 轮融资 5 月 15 日,去中心化…

Centos8离线安装中文字体-黑体

以下是关于如何在 Linux 系统(在此例中为 CentOS)上安装黑体字体(即 simhei.ttf)的步骤: 检查是否已有中文字体: fc-list :langzh这个命令会列出当前服务器所有支持中文的字体。 上传字体文件到服务器&…

因为一个Bug,差点损失了100w

大家好,我是洋子 最近在做单接口的性能测试比较多,在压测过程发现了一个比较有意思的问题,拿出来和大家分享一下 背景是这样的,最近在搞线上的抽奖活动,压测的对象是一个抽奖接口,主要的逻辑见程序的流程…

【1080. 根到叶路径上的不足节点】

来源:力扣(LeetCode) 描述: 给你二叉树的根节点 root 和一个整数 limit ,请你同时删除树中所有 不足节点 ,并返回最终二叉树的根节点。 假如通过节点 node 的每种可能的 “根-叶” 路径上值的总和全都小…

uni-app之使用App.vue全局文件的教学

在 UniApp 中,App.vue 是整个应用的入口文件,它可以作为一个全局文件,在其中定义的数据、方法和生命周期钩子可以在整个应用中使用。这篇文章将向您介绍如何使用 App.vue 文件来实现全局信息的共享和管理。 步骤: 创建 App.vue 文…

图像噪声类型:椒盐噪声,随机噪声,高斯噪声,泊松噪声,异方差高斯噪声模型和参数估计

文章目录 noise type1. 高斯噪声和泊松噪声2. 高斯分布和泊松分布的差异:3. 异方差高斯 噪声模型(泊松和高斯噪声混合)4. 几种噪声模型5. 信噪比 SNR的计算方法是6. Practical Poissonian-Gaussian noise modeling and fitting for single-im…