友元函数的简单说明

首先友元函数为了方便一个类去访问另一个类中的成员函数和成员变量,需要使用关键字friend在函数的声明时,友元函数不属于任何类的成员函数,它是在类外定义的全局函数。可以在本类中声明友元函数,声明如下:

friend void printMsg();

然后在类外定义void printMsg(myClass *s)函数。在此函数中可以通过形参myClass类对象或指针,引用来访问类myClass的成员变量,这里对于任何访问权限的成员变量都可以访问。
还可以使用另一种方式,用一个类的成员函数作为另一个类的友元函数。
在类A中定义成员函数:

class B;class A{
public:
void printMsg(B *s);
};

在类B中声明类A中的函数void printMsg(B *s)为类B的友元函数。

class B{
public:
friend void A::printMsg(B *s)//在类B中声明A的友元函数
};

这样类A就可以通过printMsg函数的指针s访问类B的私有成员了。
还有另一种友元类,将一个类声明为另一个类的友元类。

class last;
class first{
public:
void performLast(last *s);
};

在另一个类中声明first为last的友元类。

class last{
public:
friend class first;//first作为last的友元类
};

这样first的成员函数就可以访问last的私有成员了。

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

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

相关文章

一张“黑洞”照片需半吨重硬盘?更逆天的操作还有这些……

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!策划 | 孙浩峰作者 | 清儿爸编辑 | LD出品 | CSDN 云计算这两天,全世界的大…

图片的拖动布局

此例实现将图片拖动到窗口中展示,并实现随着图片个数整体的布局也发生变化。 主要代码如下: 拖动进入事件 void MainWindow::dragEnterEvent(QDragEnterEvent *event) {if(!event->mimeData()->urls()[0].fileName().right(3).compare("png&…

OpenGL ES google angle

目录 一.google angle 简介 1.ANGLE 支持跨平台2.ANGLE 支持渲染器3.ANGLE 下载地址 二.EGL 坐标系三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 …

企业实战(Jenkins+GitLab+SonarQube)_06_Jenkins自定义安装插件

如何Jenkins自定义安装插件? 接上一篇:企业实战05_Jenkins创建管理员用户https://blog.csdn.net/weixin_40816738/article/details/90383710 文章目录Jenkins自定义安装插件一、操作流程二、Rebuilder插件安装三、safe restart插件安装Jenkins自定义安装…

大数据里的婚姻:婚后两年,出轨高峰……

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!作者: Lens本文为Lens微信公号“WeLens”(ID:we-le…

setScaledContents的看法

看到的博客上都写的是setScaledContents(true);可以设置图片自适应控件大小,但是我对于此函数的看法是控件自适应图片大小,当图片为1920x1080时,加载图片的控件label就比之前大,当图片为500x300时,显示图片的label就变…

OpenGL ES Windows 搭建环境(MFC版本)

目录 一.OpenGL 和 OpenGL ES 1.OpenGL2.OpenGL ES 二.EGL 和 WGL三.OpenGL ES EGL API 简介四.OpenGL ES 案例五.依赖动态库六.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 …

企业实战(Jenkins+GitLab+SonarQube)_07_Jenkins 安全设置

前言: 默认全局安全性登录用户,可以进行任何操作,这种安全配置,相对不安全, 因此需要进行安全配置调整. 接上一篇:企业实战06_Jenkins自定义安装插件https://blog.csdn.net/weixin_40816738/article/details/90383716 …

漫画:图的 “最短路径” 问题 | 技术头条

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!作者:蠢萌的小灰转自:程序员小灰————— 第二天 ————…

Qt无法解析的外部命令

程序编译没有问题,上传svn后,下载整个项目后,编译错误,提示多个无法解析的外部的命令。 检查的要点: 程序的编译环境是否正确; 程序需要的库的路径是否正确; 查看库的路径是否正确时&#xff0c…

Linux 环境安装并配置Git

Git是一个开源的分布式版本控制系统,用于存储和管理项目的源代码。 一、Linux 环境安装并配置Git 1. 运行命令在线安装Git2. 验证Git是否安装成功3. 对Git进行初始化4. 生成Git的授权证书5. 将Git证书配置到github上,保证Linux服务器和GitHub之间可连通…

OpenGL Windows 搭建环境(MFC版本)

目录 一.简介二.freeglut glew三.glfw glad四.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录…

Qt在指定区域内拖动窗口

将窗口中的小窗口按住拖动,使其在该窗口中移动。 效果图如下: 鼠标左键按住上图中的彩色窗口,就可以在窗口的客户区中来回拖动窗口。 项目的文件结构如下: 创建基于QWidget的应用程序,main.cpp的程序没有做任何的改变…

昨天,终于拿到了腾讯 offer

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!作者 | 程序员小吴本文来自程序员小吴的一个读者的投稿,我跟他是在 2 月份…

OpenGL 褐色

目录 一.OpenGL 褐色 1.IOS Object-C 版本1.Windows OpenGL ES 版本2.Windows OpenGL 版本 二.OpenGL 褐色 GLSL Shader三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >&…

企业实战(Jenkins+GitLab+SonarQube)_03_Jenkins登录

Jenkins怎样登录?接上一篇Jenkins运行 https://blog.csdn.net/weixin_40816738/article/details/90383686 文章目录1. Windows复制秘钥登录Jenkins2. Linux复制秘钥登录Jenkins1. Windows复制秘钥登录Jenkins 秘钥存放文件的位置(如上图所示): C:\User…

OpenStack精华问答 | OpenStack 网络中 OpenFlow 规则的作用是什么?

被亲生父母抛弃,被众多大厂拒绝,OpenStack 却依旧坚挺。今天就让我们看看关于OpenStack 的精华问答。1Q:OpenStack 网络中 OpenFlow 规则的作用是什么?A: OpenFlow 规则是一种机制,这种机制定义了一个数据包如何从源到达目的地。O…

记录qt窗口在拖动过程中出现的问题

问题描述: 在窗口拖动的过程中刚开始可以流畅的拖动窗口,但是一小会儿之后出现窗口拖不动的现象,或者按下鼠标在拖动区域内可以流畅拖动,但是按下鼠标朝一个方向拖动后,释放鼠标,按照此操作操作几次后&…

企业实战(Jenkins+GitLab+SonarQube)_02_Jenkins运行

Jenkins怎样运行? 文章目录一、Jenkins怎样在Windows运行?1. 找到下载的本地jenkins.war的目录,cmd进入命令行,执行:2. jenkins启动成功后,浏览器访问:localhost:8080二、Jenkins怎样在Linux运行…

Windows OpenGL ES 图像褐色

目录 一.OpenGL ES 图像褐色 1.原始图片2.效果演示 二.OpenGL ES 图像褐色源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL E…