友元函数

C++——详解类模板与友元函数 模板类的友元函数有三类: 1)非模板友元函数:友元函数不是模板函数,而是利用模板类参数生成的函数。2)约束模板友元函数:模板类实例化时,每个实例化的类对应一个友元函数。 3)非约束模板友元函数:模板类实例化时,如果实例化了n个类,也会实例化n个友元函数,每个实例化的类都拥有n个友元函数。 阅读详情

友元函数不是类的成员函数,却可以像类的成员函数一样直接访问类的私有成员(包括私有成员函数和私有成员变量)。为了使一个函数成为类的友元函数,只需在类的定义中用friend关键字进行指明即可。

`class friendfuc
{
private:
    int hours, minutes;

public:
    friendfuc();
    friendfuc(int h, int m);
    friend void showhour(friendfuc & show);//友元函数声明
};`

给类friendfuc声明了一个友元函数,这个函数可以是任意类型的,在正常定义的前提下,在前面加个friend就好了。

#include<iostream>
#include"friend.h"
using namespace std;
friendfuc::friendfuc(int h, int m)//构造函数
{
    hours = h;
    minutes = m;
}

void showhour(friendfuc & s)//友元函数定义
{
    cout << s.hours << endl;
    cout << s.minutes << endl;
}

void main()
{

    friendfuc  show(5, 30);//初始化,自动调用自定义的构造函数
    showhour(show);//通过友元函数来访问类私有变量
    getchar();
}

编译结果

注意:
(1)友元函数的声明:在类定义处声明友元函数,形参一般为该类对象的引用
(2)友元函数的定义出不需要加friend关键字,只需像常规函数那样定义就好。

11 友元函数的使用大全 我们知道,C++的类具有封装和信息隐藏的特性。一般情况下,我们会封装public的成员函数供用户调用,而将成员变量设置为private或protected。但在一些比较复杂的业务情况下,可能需要去访问对象中大量的private或protected成员变量。如果为这些private或protected成员变量都封装public成员函数,无疑是比较麻烦的,有时候还会影响程序的执行效率。此时,友元函数就派上了用场。这就好比我们的房间安装了一个指纹锁,陌生人是无法进入房间内部的。 阅读详情

相关推荐

C++友元函数/友元类

(1)在类中用friend关键字去声明函数/类,则这个函数/类就会变成友元函数/友元类;(2)友元函数/友元类的声明位置没有要求,可以在private、protected、public权限区,效果都是一样的;(3)友元函数/友元类是单向的,A在B类中被声明为友元函数/友元类,表示A是B的友元函数/友元类,但B不是A的友元函数/友元类;(4)友元函数/友元类具有和类成员一样的权限,可以访问protected和private权限的成员,但不是类的成员;

qq_21603315的博客 1249

【C++】友元函数 ( 友元函数简介 | 友元函数声明 | 友元函数语法 | 友元函数声明不受访问控制限制 | 友元函数参数要求 )

一、友元函数简介 二、友元函数声明 1、友元函数语法 2、友元函数声明不受访问控制限制 3、友元函数参数要求 4、友元函数示例 三、完整代码示例 - 友元函数

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 9683

基于IC617下Layout XL的使用

基于IC617下Layout XL的使用

weixin_43816759的博客 1万+

C++友元函数基本用法(声明、定义、调用)

本文主要总结一个C++中基本的友元函数用法,包括友元函数声明和定义、一个应用简单例子和编译结果,友元函数特性总结,下面是具体讲述。 1.1友元函数声明和定义 首先友元函数是声明在类中的,作用是可以反问该类的私有成员(成员函数和成员参数)。其中,友元函数的声明跟平常函数声明基本一样,只需要在函数声明前加一个friend就行,友元函数的定义跟普通函数定义一模一样(不需要指定类作用域运算符),下面是...

净无邪博客 3万+

AI赋能运筹优化:从参数生成到智能求解的工程实践

运筹学通过线性规划、整数规划等数学模型,为供应链、物流、生产排程等复杂决策问题寻找最优解,其核心价值在于提升资源利用效率与决策科学性。传统方法依赖精确的输入参数与专家经验,面临数据不准、建模门槛高、求解调优难等挑战。人工智能技术的引入,正从原理层面重塑这一流程:通过深度学习模型生成更贴合现实的动态参数(如需求分布、行驶时间),利用自然语言处理降低建模门槛,并借助强化学习对求解器进行智能参数调优。这种AI与运筹学的融合,在工程实践中显著提升了优化系统的自适应能力与求解效率,使其在应对实时交通、柔性生产调度等动

weixin_26913055的博客 595

探索Python融合地学:一文解决osgeo库安装失败问题

总结一下,要安装osgeo模块,关键在GDAL依赖库的安装,如果能够顺利安装GDAL依赖库,因其是osego的模块,因此osgeo的部分模块也能够得到自动安装,此时再运行代码,发现代码并不报错,能够正常运行了。第一步,我们要安装imagecodecs库,它支持多种常见的图像格式,当然也包含我们的目标tif格式,为方便后续的图像处理和安装osgeo模块,先安装此库。目前GDAL已经更新到了3.10版本,这里主要看你的Python版本是上面,小编用的是Python3.13,电脑是64位的,因此,我们选择。

Promising_GEO的博客 5463

【C++入门】友元函数详解(定义、实现、优缺点)

(1)在类中用friend关键字去声明函数/类,则这个函数/类就会变成友元函数/友元类;(2)友元函数/友元类的声明位置没有要求,可以在private、protected、public权限区,效果都是一样的;(3)友元函数/友元类是单向的,A在B类中被声明为友元函数/友元类,表示A是B的友元函数/友元类,但B不是A的友元类函数/友元类;(4)友元函数/友元类具有和类成员一样的权限,可以访问protected和private权限的成员,但不是类的成员;

weixin_42031299的博客 1万+

Vue集成飞书前端JSSDK

文章目录前言<1>飞书前端JSSDK<2>使用步骤1.将JSSDK引入到VUE2.读入数据总结 前言 公司需要使用飞书软件,所以转战飞书开发,也是对新知识的探索与研究,飞书SDK也一直都在更新,路虽远,行必达。 <1>飞书前端JSSDK 1、官网地址:https://open.feishu.cn/document/uYjL24iN/uITO4IjLykDOy4iM5gjM 2、当前使用的飞书前端JSSDk的版本:1.5.4 <!-- 在html文档中 --&gt

A 1万+

【C++ | 友元(friend)】友元函数、友元类、友元成员函数详解及例子代码

本文介绍了C++的友元函数、友元类、友元成员函数、其他友元关系,以及使用例子介绍了如何声明、定义、使用。

wkd_007的博客 1万+

基于STM32L4XX 、HAL库的STSPIN32G4三相无刷直流电机(BLDC)驱动应用C语言程序设计

/ 设置PWM模式为6步换相。│PA5-7 ├── SPI ────►│SCK/MISO│ │ 三相桥 │。– 2路电机控制高级定时器(16位,支持6路 PWM 通道)// 60度电气周期对应转速 = 60/(极对数 * 6 * 周期)// 电气角度(0-3599)

PP_Cottage的博客 147

MuJoCo XLA (MJX) 强化学习人形机器人四足机器人入门教程(三)

MJX 是用 JAX 编写的 MuJoCo 实现,可以在 GPU/TPU 上进行大批量训练。在本笔记本中,我们将演示如何使用 MJX 训练 RL 策略。在开始大量 RL 工作负载之前,我们先从一个简单的示例开始!xml = """"""接下来,我们使用 MJX 将 MuJoCo 模型和数据放到 GPU 设备上。下面,我们将打印来自 MuJoCo 和 MJX 的 qpos。

2506_90492529的博客 2473

C++之友元函数

友元函数:友元函数的定义、分类、三种友元函数举例,代码注意点,判断谁是谁的友元函数或类

m0_59052131的博客 2万+

驾驶行为检测数据集准备与处理详解

本文详细介绍了构建"未系安全带/打电话"检测模型的数据集准备流程。首先分析公开数据集(如StateFarm、AICityChallenge)的优缺点,并提供格式转换脚本。重点推荐自行采集+半自动标注方案:1)视频关键帧提取;2)使用预训练模型生成伪标签;3)人工修正标注;4)数据增强(光照变化、运动模糊等)。文章还包含数据配置文件编写指南,并针对类别不平衡、小目标检测等常见问题提出解决方案,如过采样、切片训练和负样本挖掘。通过这套流程可构建高质量数据集,为模型训练奠定基础。

u010117029的博客 356

C++友元函数

友元函数 友元函数可以访问其他类中的私有成员,有助于数据共享,提高程序效率,但它又是对封装性的一个破坏,所以程序中不能大量使用友元 对友元函数的使用,和普通函数的使用方法一样,不需要在友元函数前面加上特殊标志。但是如果该友元函数是一个类的成员函数,则使用时还是要子啊友元函数前加上所属的类名。 #include <iostream> using namespace std; //对Date类的提前引用声明 class Date; //定义Time类,声明display是其成员函数,形参是Date类

heifengli6666的博客 2896

【教程4>第5章>第28节】基于帧同步+相位同步+位同步的QPSK调制解调通信系统整体性能分析

综上所述:1.SNR<10db时,整体性能下降,当SNR=0db时,系统无法正常工作。2.gardner环性能达到2.5e-5时偏可以正常工作,增加之后无法正常工作。3.当相位偏差大于pi/4的时候,对最后的性能会有一定影响。

FPGA/MATLAB学习教程/源码/项目合作开发 557

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【C++】友元函数

友元1.什么是友元函数 2.友元的作用 3.友元的优缺点 4.什么情况下可以使用友元 5.友元的使用 6.友元函数和成员函数的区别 背景:类具有封装性和隐藏性。类中的成员函数可以访问类的私有成员,类外代码中的函数无法访问类的私有成员;但是类外面的函数可以访问类的公有成员,但是把成员数据设置为公有,又会破坏类的隐藏性。此外,在某些情况下,尤其是多次调用成员函数时,由于参数传递,类型检查和安全性...

hgelin的博客 4225

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

qt 友元函数

private:public:// 构造函数// 声明友元函数// 定义友元函数// 友元函数可以访问Box类的私有成员// 调用友元函数return 0;在这个例子中,printWidth函数被声明为Box类的友元函数。因此,它可以在不违反封装性的情况下访问Box类的私有成员width。在main函数中,我们创建了一个Box对象,并通过友元函数printWidth打印了它的宽度。

xie__jin__cheng的博客 1203

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

类模板与友元函数

类模板与友元函数:友元函数在类外实现的举例 //============================================================================ // Name : test.cpp // Author : // Version : // Copyright : Your copyright notice // Description : Hello World in C++, Ansi-style //====

qq_45755581的博客 2056

模板类和友元函数

非模板友元、约束(bound)模板友元、非约束(undound)模板友元。

孤云出岫, 去留一无所系. 朗镜悬空,静躁两不相干. 3731

C++ 友元函数

1.友元函数的简单介绍 1.1为什么要使用友元函数 在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。 具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。 实际上具体大概有下面两种情况需要使用友元函数:(1)运算符重载的某些场合需要使用友元。(2)两个类要共享数据的时候。 1.2使用友元函数的优缺点 优点:能够提高效率,表达简单、

weixin_43107240的博客 1238
上一篇: C++构造函数
下一篇: STL常用容器
yang-彧
博客等级 码龄12年 105粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值