C++(10)——类与对象(最终篇)

目录

static成员

概念

特性

友元

友元函数

友元类

内部类

匿名对象


经过这么多天的分享,C++的类与对象终于要结束了。结束也意味着C++快要入门了。

static成员

概念

声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化。

我们看到虽然_year在类中,但是_year不能再类中初始化,所以,我们要在类外初始化。

特性

1 静态成员为所有类对象所共享的,不是某个具体的对象,存放在静态区。

2 静态成员变量必须在类外定义,定义时不添加static关键字,类中只是声明。

3 类静态成员可以的类名::静态成员或者对象.静态成员来访问。

4 静态成员函数没有隐藏的this指针,不能访问任何非静态成员。

5 静态成员也是类的成员,受public等访问限定符的限制。

友元

友元函数

问题:我们现在需要重载<<,让我们使用<<可以直接打印出对象的所有值,但是我们重载后,发现了一个问题,那就是 d1和cout的位置反了。

这是问什么呢?因为重载函数的第一个参数是 this指针,默认是左操作数,所以才会和cout反过来。但是,如果我们构成全局的重载函数,会导致不在类内了。

所以,我们可以使用友元函数。

在类内声明时,加上 friend的关键字。

这样就可以了。

说明:

1 友元函数可以访问类的私有和保护成员,但不是类的成员函数。

2 友元函数不能用 const 修饰。

3 友元函数可以在类的任意地方声明,不受访问限定符限制。

4 一个函数可以拥有多个友元函数。

5 友元函数调用和普通函数调用相同。

友元类

友元类的所有成员函数都可以时另一个类的友元函数,都可以访问另一个类的任何成员。

Date 为 A 的友元类,可以访问A的成员。

注意:

1 友元关系是单项的,不具有交换性。就比如上面,Date是A的友元类,但是如果Date不声明A的化,A就不是Date的友元类。唐牛不等式秒了。

2 有缘关系不能传递。

3 友元关系不能继承。

内部类

概念:如果一个类A定义在另一个类B的内部,这个类A就B的内部类。

内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何访问权限。

所以,内部类就是外部类的友元,但外部类不是内部类的友元。

注意的是:如果一个外部类中含有内部类,计算该外部类的大小时,是不计算内部类的。

匿名对象

匿名对象就是用类创建对象时,不给对象名字。

注意:匿名对象的生命周期只有它对应的代码这一行,运行到下一行时,它的生命周期就结束了。

今天内容结束了。886

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

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

相关文章

mysql二叉树排序例子

⼆叉排序树&#xff0c;理想情况下是⼆分&#xff0c;可能创建时⽐较深&#xff0c;和⼀条线差不多&#xff0c;性能并不⾼。 如果你想在 MySQL 中实现二叉树的排序&#xff0c;一种常见的方法是使用递归查询。以下是一个简单的例子&#xff0c;展示如何对一个具有父子关系的二…

放空自己和终端的clear

clear 造物无言却有情&#xff0c;每于寒尽觉春生。 张维屏《新雷》 没有啥说的&#xff0c;就是放空一下自己&#xff0c;也清空一下终端&#xff0c;仅此而已。 $ clear

基于YOLOv8算法的照片角度分类项目实践

目录 一、任务概述二、YOLOv8算法简介2.1 算法改进2.2 算法特点2.3 网络结构2.4 性能比较 三、工程实践3.1 安装算法框架库ultralytics3.2 库存照片预处理3.2.1 提取所有图片3.2.2 去除冗余的相同照片3.2.3 去除无车辆照片3.2.4 随机提取指定数量的图片 3.3 照片朝向分类3.3.1 …

STM32--USART串口(2)串口外设

一、USART简介 可配置数据位&#xff1a;不需要校验就是8位&#xff0c;需要校验就选9位&#xff1b; 停止位&#xff1a;决定了帧的间隔; STM32F103C8T6USART&#xff1a;USART1挂载在APB2总线上&#xff0c;USART2和USART3挂载在APB1总线上&#xff1b; 二、USART框图 TXE…

excel给数据库初始化/旧数据处理(自动sql拼装)

思路&#xff1a; 首先导出数据到excel编写单条数据操作的sql利用excel CONCATENATE 函数自动生成&#xff0c;每一行数据的操作sql 小技巧:对于需要套娃的字段值&#xff0c;可以加一个临时列同样使用CONCATENATE函数进行sql拼装 案例&#xff1a; 1.临时列:CONCATENATE(C2, …

分库分表 21 条法则,hold 住!

大家好&#xff5e;今天给大家分享分库分表的 21 条法则 我们结合具体业务场景&#xff0c;以t_order表为例进行架构优化。由于数据量已经达到亿级别&#xff0c;查询性能严重下降&#xff0c;因此我们采用了分库分表技术来处理这个问题。具体而言&#xff0c;我们将原本的单库…

【Python小游戏】五子棋小游戏(完整代码)

文章目录 写在前面Tkinter简介五子棋小游戏游戏介绍程序设计运行结果注意事项写在后面写在前面 本期内容:基于tkinter开发一个五子棋小游戏 实验环境 python3.11及以上pycharmtkinterTkinter简介 Tkinter是Python中最常用的图形用户界面(GUI)库之一,用于创建窗口、对话框…

如何搭建私有云盘SeaFile并实现远程访问本地文件资料

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-hsDnDEybLME85dTx {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

Web项目利用OSS进行图像存储服务

一、OSS介绍 在Web项目中&#xff0c;一些常见的功能&#xff0c;比如展示图片&#xff0c;修改头像等&#xff0c;都需要进行图片的上传操作&#xff0c;但是如果是存储在Web服务器中&#xff0c;在读取图片的时候会占用比较多的资源&#xff0c;影响服务器的性能。 常…

【数据结构】双向带头循环链表实现及总结

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 1. 双向带头循环链表的实现2. 顺序表和链表的区别 1. 双向带头循环链表的实现 List.h #pragma once #include <stdio.h> #include <assert.h> #include <stdlib.h> #include <stdbool.h>typede…

fastDFS客户端实现文件上传

一、准备工作 请确保fastDFS的tracker服务和storage服务都是处于启动状态&#xff0c;防火墙是关闭的&#xff1b; 二、具体步骤 1、pom.xml 2、让当前的微服务成为fdfs的客户端 package com.qf.config;import com.github.tobato.fastdfs.FdfsClientConfig; import org.sprin…

爬虫工作量由小到大的思维转变---<第四十三章 Scrapy Redis mysql数据连通问题(2)>

前言: 接上一章的爬虫工作量由小到大的思维转变---&#xff1c;第四十一章 Scrapy Redis 转mysql数据连通问题&#xff1e;-CSDN博客 这一章主要是讲关于多机连上sql要注意的问题! 正文: 会遇到哪些问题: 数据重复写入&#xff1a;当多个Scrapy-Redis实例同时运行并将数据写…

直播相关——腾讯直播SDK(一)

梳理了下项目中使用的腾讯直播SDK相关&#xff0c;为再接入一套声网RTC SDK做些准备工作。 1.sdk集成 dependencies {implementation com.tencent.liteav:LiteAVSDK_Professional:latest.release }初始化与摄像头推流相关 初始化与摄像头推流相关 2.给 SDK 配置 License 授…

寒假刷代码随想录

数组 二分 在循环中 始终坚持根据查找区间的定义来做边界处理。 第一种写法&#xff0c;我们定义 target 是在一个在左闭右闭的区间里&#xff0c;也就是[left, right] &#xff08;这个很重要非常重要&#xff09;。 区间的定义这就决定了二分法的代码应该如何写&#xff0…

JMeter HTTP请求的详细指南,还不知道的快来看

HTTP请求简介 在JMeter中&#xff0c;服务器名称和它的路径对于检查请求是否到达了正确的目的地非常重要。默认情况下&#xff0c;HTTP协议与请求一起被遵循&#xff0c;如果需要&#xff0c;可以转换为HTTPS。如果需要&#xff0c;用户参数可以包含在特定页面的请求中。如果&a…

MySQL查询缓存

MySQL查询缓存 MySQL在查询的时候首先会查询缓存&#xff0c;如果缓存命中的话就直接返回结果&#xff0c;不需要解析sql语句&#xff0c;也不会生成执行计划&#xff0c;更不会执行&#xff1b;如果没有命中缓存&#xff0c;则再进行SQL解析以及进行查询&#xff0c;并将结果返…

机器学习系列-2 线性回归训练损失

机器学习系列-2 线性回归&训练损失 学习内容来自&#xff1a;谷歌ai学习 https://developers.google.cn/machine-learning/crash-course/framing/check-your-understanding?hlzh-cn 本文作为学习记录1 线性回归&#xff1a; 举例&#xff1a;蝉&#xff08;昆虫物种&…

安装配置sqoop

一、了解Sqoop 1、Sqoop产生的原因 A. 多数使用hadoop技术的处理大数据业务的企业,有大量的数据存储在关系型数据中。 B. 由于没有工具支持,对hadoop和关系型数据库之间数据传输是一个很困难的事。 以上是sqoop产生的主要原因,也因此Sqoop主要用于hadoop与关系型数据库之…

java下载网络文件

/*** 下载文件** param urlStr* param response* throws Exception*/ GetMapping("/downLoadFile") public void downLoadFile(String urlStr, HttpServletResponse response) throws Exception{// 定义一个URL对象&#xff0c;就是你想下载的图片的URL地址URL url …

【C++】类和对象2:this指针

前言 今天来学习this指针 引入 我们用一个日期Date类来举个例子 class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout <<_year<< "-" <<_month << "-"<…