类与对象(终章)——友元,内部类,匿名对象

这里写目录标题

  • 1. 友元
    • 1.2 友元函数
    • 1.3 友元类
  • 2. 内部类
  • 3.匿名对象

1. 友元

之前实现日期类我们实现输入输出流重载的时候就已经了解了友元的概念,我们今天正式走进友元,详细地学习友元的各种特点与性质。

关键字:friend

1.2 友元函数

友元函数在重载operator<<与operator>>时已经进行过介绍与实际举例:因为我们要让变量流向cout/cin,因此在全局写函数,让该函数成为日期类的友元函数,该函数就能直接访问类的私有成员,在类的内部声明,声明时需要加friend关键字,此处不再详细赘述,直接给出友元函数的特点:
1.友元函数可以访问类的私有和保护成员,但不是类的成员函数;
2.友元函数不能用const修饰;
3.友元函数可以在类定义的任何地方声明,不受类访问限定符的限制;
4.一个函数可以是多个类的友元函数,
5.友元函数的调用与普通函数的调用原理相同。

1.3 友元类

友元类也很好理解:
在这里插入图片描述
友元类的特性:
1.友元关系是单向的;
2.友元关系不具有传递性(即A是B的友元,B是C的友元,不代表A是C的友元);

2. 内部类

如果一个类定义在另一个类的内部,这个内部定义的类就叫做内部类:
在这里插入图片描述
内部类不属于外部类,它是一个独立的类,只是他的访问受外部类的类域与访问限定符的限定,同时,内部类天生是外部类的友元函数,内部类能访问到外部类的成员变量。
下面的实验形象的证明了外部类并不包含内部类,他们是独立的个体。
在这里插入图片描述
内部类的特性:
1.内部类可以定义在外部类的public、protected、private。
2.内部类可以直接访问外部类的static成员,不需要外部类的对象/类名。
3.内部类在外部的访问受外部类的限定;
4.内部类是独立的一个类,其成员不属于外部类;

3.匿名对象

定义一个对象时,不给对象命名:在这里插入图片描述
匿名对象的生命周期只在它所在这一行(即遇到分号;它的生命周期就结束了)在这里插入图片描述
最后一点内容就是编译器对于传参与传返回值时会进行一些优化,提高程序运行效率,介于每种编译器的优化效果不同,这一部分同学们可以下去自己尝试看看自己的编译器怎么优化的?
至此,类与对象的内容全部结束,类与对象是学习C++的一道门槛,大家一定要好好重视这部分内容,我们下期再见!!!

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

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

相关文章

vue3:26—新的内置组件

目录 Teleport Suspense Teleport 什么是Teleport? Teleport 是一种能够将我们的组件html结构移动到指定位置的技术 当在元素中的css使用了filter滤镜属性的时候&#xff0c;会导致内部 fixed 元素定位发生错误&#xff0c;即不再相对 viewport 进行定位&#xff0c;而是相对…

《山雨欲来-知道创宇 2023 年度 APT 威胁分析总结报告》

下载链接: https://pan.baidu.com/s/1eaIOyTk12d9mcuqDGzMYYQ?pwdzdcy 提取码: zdcy

Django模板(三)

一、标签URL 返回与给定视图和可选参数相匹配的绝对路径引用(不含域名的 URL) {% url some-url-name v1 v2 %} 第一个参数是url模式名称,后面跟着的是参数,以空格分隔可以使用关键字: {% url some-url-name arg1=v1 arg2=v2 %}如果您想检索命名空间的URL,请指定完全限定…

Msql-数据库死锁

实验案例 CREATE TABLE t1_deadlock ( id int(11) NOT NULL, name varchar(100) DEFAULT NULL, age int(11) NOT NULL, address varchar(255) DEFAULT NULL, PRIMARY KEY (id), KEY idx_age (age) USING BTREE, KEY idx_name (name) USING BTREE ) ENGINEInnoDB DEFAULT CHARS…

linux安装Webmin

简介 Webmin是功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。Webmin支持绝大多数的Unix系统&#xff0c;这些系统除了各种版本的linux以外还包括&#xff1a;AIX、HPUX、Solaris、Unixware、Irix和FreeBSD等。 安装…

百面嵌入式专栏(面试题)内存管理相关面试题1.0

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍内存管理相关面试题 。 一、内存管理相关面试题 page数据结构中的_refcount和_mapcount有什么区别?匿名页面和高速缓存页面有什么区别?page数据结构中有一个锁,我们称为页锁,请问trylock_page()和loc…

CAD-autolisp(四)——编译

目录 一、编译1.1 界面操作1.2 生成的应用程序&#xff08;二选一&#xff09; 二、后续学习 一、编译 编译&#xff1a;lsp后缀名为原文件&#xff0c;后缀名为fas、vlx为编译后文件&#xff0c;其会把sld、dcl、lsp等文件都编译进一个应用程序文件中加载&#xff1a;cad命令…

计算机二级C语言的注意事项及相应真题-2-程序修改

目录&#xff1a; 21.计算n!22.将单向链表结点(不包括头结点)数据域为偶数的值累加起来&#xff0c;并且作为函数值返回23.在字符串的最前端加入n个*号&#xff0c;形成新串&#xff0c;并且覆盖原串24.依次取出字符串中所有数字字符&#xff0c;形成新的字符串&#xff0c;并取…

删除.git的影响、git分支切换时注意事项

一、删除.git的影响 master分支文件 dev分支文件 删除.git后 文件为删除.git前分支的文件状态。 二、git分支切换时注意事项 情景&#xff1a;如果我在分支A&#xff0c;想要跳转到分支B。 git的规矩是&#xff0c;在那个分支上进行的提交&#xff0c;就算哪个分支上的工作…

白嫖10款游戏加速器,一年都不用开会员!

过年期间你们是走亲串戚还是窝家玩游戏、追剧&#xff1f;相信很多小伙伴都不会放过这个难得的假期&#xff0c;肯定是会百忙之中来两把的&#xff0c;那么人一多玩游戏肯定就会拥堵&#xff0c;有延迟。解决延迟最好的办法就是用加速器&#xff0c;当你的网络比别人强时&#…

浅谈交换原理(3)——交换网络

一、基本概念 交换网络是由若干个交换单元按照一定的拓扑结构和控制方式构成的网络。交换网络的三个基本要素是&#xff1a;交换单元、不同交换单元间的拓扑连接和控制方式。 1.1 单机交换网络与多级交换网络 交换网络按拓扑连接方式可分为&#xff1a;单级交换网络和多级交换网…

版本控制器Git

目录 背景 图形化界面 下载安装或使用网页版 安装图形化界面 注册账号 创建仓库​ 创建本地仓库 ​创建项目到本地工作目录 三板斧 git add git commit git push 注意 命令行 Git和Gitee/Github的区别&#xff1f; 版本控制器是什么&#xff1f; 本地仓库VS…

综合回溯,剪枝,暴搜

目录 力扣1863.找出所有子集的异或总和再求和 力扣47.全排列II​编辑 力扣17.电话号码的字母组合电话号码的字母组合https://leetcode.cn/problems/letter-combinations-of-a-phone-number/​编辑 力扣22.括号生成 力扣1863.找出所有子集的异或总和再求和 class Solution {in…

第三百一十三回

文章目录 1. 概念介绍2. 实现方法2.1 obscureText属性2.2 decoration属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现倒计时功能"相关的内容&#xff0c;本章回中将介绍如何实现密码输入框.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍…

GEE入门篇|栅格数据集概述(四):其他卫星产品

目录 1.甲烷数据集 2.天气及气候数据 3.预先分类的土地用途和土地覆盖数据集 3.1ESA WorldCover 3.2 全球森林变化数据集 卫星还可以收集有关气候、天气和大气中存在的各种化合物的信息。这些卫星利用部分电磁频谱&#xff0c;以及不同物体和化合物在不同波长的阳光照射下…

golang windows 环境搭建 环境配置

golang windows 环境搭建 环境配置 Golang学习之路一环境搭建 MacBook Linux 树莓派raspberrypi安装Golang环境 官网下载地址: https://go.dev/dl/ https://golang.google.cn/dl/ 下载对应系统版本&#xff0c;例如windows 64位系统&#xff0c;下载&#xff1a;xxx.window…

【Langchain Agent研究】SalesGPT项目介绍(一)

【2024最全最细LangChain教程-13】Agent智能体&#xff08;二&#xff09;-CSDN博客 之前我们介绍了langchain的agent&#xff0c;其实不难看出&#xff0c;agent是更高级的chain&#xff0c;可以进行决策分析、可以使用工具&#xff0c;今天我们开始开启一些更高阶的课程&…

【机器学习】单变量线性回归

文章目录 线性回归模型&#xff08;linear regression model&#xff09;损失/代价函数&#xff08;cost function&#xff09;——均方误差&#xff08;mean squared error&#xff09;梯度下降算法&#xff08;gradient descent algorithm&#xff09;参数&#xff08;parame…

Nginx限流设置

1.反向代理(建议先看正向代理,反向代理则是同样你要与对方服务器建立连接,但是,代理服务器和目标服务器在一个LAN下,所以我们需要与代理服务器先建交,再由他获取与目标服务器的交互,好比一个带刀侍卫守护着目标服务器) 屏蔽目标服务器的真实地址&#xff0c;相对安全性较好&am…

ubuntu下修改hosts读写权限

ubuntu下修改hosts文件的操作&#xff1a; 由于需要在hosts文件下添加ip地址信息&#xff0c;但是初始情况下系统该文件为只读权限无法修改&#xff0c;具体操作如下所示&#xff1b; 1.cd到系统etc目录下&#xff0c;执行如下命令,此时会提示输入密码&#xff0c;直接输入回…