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

这里写目录标题

  • 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,一经查实,立即删除!

相关文章

【SQL】力扣1571. 仓库经理

1571. 仓库经理 文章目录 【SQL】力扣1571. 仓库经理题目描述输入输出示例示例 1: 解题思路代码与算法步骤解析完整代码 复杂度分析总结 【SQL】力扣1571. 仓库经理 题目描述 本题目来自力扣&#xff08;LeetCode&#xff09;数据库题目集&#xff0c;编号1571&#xff0c;题…

vue3:26—新的内置组件

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

代码随想录day18 Java版

700.二叉搜索树中的搜索 前几天刚对比了下堆和二叉搜索树。堆是上下位置区分大小&#xff0c;二叉搜索树是左右位置区分大小 这道题简单应用了二叉搜索树的查找功能&#xff0c;直接用前序遍历 class Solution {public TreeNode searchBST(TreeNode root, int val) {if (roo…

《山雨欲来-知道创宇 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,请指定完全限定…

matlab去图像畸变

Input_path ‘C:\Users\Dell\Desktop\毕业设计\去畸变\Image\1’; Output_path‘C:\Users\Dell\Desktop\毕业设计\去畸变\Image\2’; namelist dir(strcat(Input_path,‘*.jpg’)); %获得文件夹下所有的 .jpg图片 len length(namelist); for i1:len namenamelist(i).name; …

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等。 安装…

Apollo2.2.0 arm 达梦 人大金仓 适配

基本思路和我之前改的oracle的类似&#xff0c;这里就不赘述了。 Apollo oracle适配_apollo oracle脚本-CSDN博客 目前实现了kingbase8 pgsql兼容模式下适配。达梦 mysql兼容模式下的适配&#xff0c;兼容arm的国产处理器&#xff0c;直接上git链接&#xff0c;有问题私。不同…

百面嵌入式专栏(面试题)内存管理相关面试题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;当你的网络比别人强时&#…

【链表】-Lc83-删除有序链表中的重复元素(快慢双指针,slow,fast)

写在前面 最近想复习一下数据结构与算法相关的内容&#xff0c;找一些题来做一做。如有更好思路&#xff0c;欢迎指正。 目录 写在前面一、场景描述二、具体步骤1.环境说明2.代码 写在后面 一、场景描述 删除有序链表中的重复元素。 示例&#xff1a; 输入&#xff1a;1->2…

避免Arrays.asList陷阱:优雅处理结构性修改的方法

临近年终&#xff0c;项目交付排期比较紧张&#xff0c;导致很多时候&#xff0c;Code Review 往往是走马观花&#xff0c;没有严格执行。最近&#xff0c;一个实习生就产生了一个十分低级的代码BUG。笔者感觉这个问题&#xff0c;对于实习生&#xff0c;尤其是刚入职的 应届 J…

幻兽帕鲁mod安装指南(自用mod)

以下mod仅steam单机安装验证有效&#xff01; 网址&#xff1a;https://www.nexusmods.com/palworld/mods/?BH2 游戏安装路径参考&#xff1a;D:\Steam\steamapps\common\Palworld\Pal\Binaries\Win64\Mods 一、功能性MOD 首先安装mod环境UE4SS xinput UE4SS xinput 安装步骤…

浅谈交换原理(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…