C++ 友元函数 友元类 friend class
类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。
尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。
友元可以是一个函数,该函数被称为友元函数;
友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。
如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend,如下所示:
class Box {double width; public:double length;friend void printWidth( Box box );void setWidth( double wid ); };
声明类 ClassTwo 的所有成员函数作为类 ClassOne 的友元,需要在类 ClassOne 的定义中放置如下声明:
friend class ClassTwo;
请看下面的程序:
实例
#include <iostream>using namespace std;class Box
{double width;
public:friend void printWidth( Box box );void setWidth( double wid );
};// 成员函数定义
void Box::setWidth( double wid )
{width = wid;
}// 请注意:printWidth() 不是任何类的成员函数
void printWidth( Box box )
{/* 因为 printWidth() 是 Box 的友元,它可以直接访问该类的任何成员 */cout << "Width of box : " << box.width <<endl;
}// 程序的主函数
int main( )
{Box box;// 使用成员函数设置宽度box.setWidth(10.0);// 使用友元函数输出宽度printWidth( box );return 0;
}
当上面的代码被编译和执行时,它会产生下列结果:
Width of box : 10
https://www.runoob.com/cplusplus/cpp-friend-functions.html
C++ 友元函数 友元类 friend class相关推荐
- 类模板,多种类型的类模板,自定义类模板,类模板的默认类型,数组的模板实现,友元和类模板,友元函数,类模板与静态变量,类模板与普通类之间互相继承,类模板作为模板参数,类嵌套,类模板嵌套,类包装器
1.第一个最简单的类模板案例 #include "mainwindow.h" #include <QApplication> #include <QPush ...
- 友元函数 友元类 友元成员函数
友元 一般来说,类内的私有数据是对外不可见的,但在有些情况下,我们需要在类外对该类的私有数据进行访问,这就需要用到一种新技术--友元(friend),即在声明前添加关键字friend. 友元关系是单向 ...
- C++笔记 友元函数 友元类
友元函数 :友元函数是可以直接访问类的私有成员的非成员函数. 它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下: ...
- 友元函数、类的非静态成员函数、静态成员函数的区别
类中申明的函数相对于类来说有三层意思: 1.有this指针 2.函数在类的作用区域中 3.可以访问类中私有部分 4.可以被继承 非静态成员函数具有1234 静态成员函数具有234 友元函数具有3 静态 ...
- 【C++ 语言】面向对象 ( 成员函数 | 常量函数 | 友元函数 | 友元类 | 单例类 )
文章目录 成员函数 常量函数 友元函数 new 创建对象 友元类 单例类 成员函数 此处继续上一篇博客继续向后讲解C++面向对象 类成员方法 , 除了定义构造方法与析构方法之外 , 还可以定义普通的成 ...
- c++ 友元函数,友元类
友元函数破坏了类的封装特性,它可以在类的外部访问类的私有属性 #include "iostream" using namespace std; class A1 { public: ...
- C++中友元函数和友元类
友元函数 友元函数是可以直接访问类的私有成员的非成员函数.它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下: frien ...
- public 函数_Chapter18:友元函数和友元类
这一章的问题从"如何畅通无阻的访问另一个类"开始,类的属性有private.protected.public,根据继承权限有不同的访问方式.但是类之间的关系不一定是继承,有时一个类 ...
- C++ 友元(友元函数和友元类)
友元的作用:提高了程序的运行效率(使得普通函数可以直接访问类的保护数据,避免了类成员函数的频繁调用,即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和隐藏性,使得非成员函数可以访问 ...
- C++ 类的知识 | 构造函数再探、匿名对象、友元函数、内部类、类的const成员、类的static成员
文章目录 构造函数再探 以下代码共调用多少次拷贝构造函数 委托构造函数 概念 形式 匿名对象 友元 友元的声明 友元类 令成员函数作为友元 函数重载和友元 注意 内部类 特性 类的const成员 可变 ...
最新文章
- C#2.0实例程序STEP BY STEP--实例二:数据类型
- windows PHPStudy Apache 配置支持HTTPS
- java获取当前系统时间毫秒_java 获取当前系统时间简写 | 学步园
- c#如何跳出一个函数_C#初学者教程系列9:类和对象
- Codevs 1689 建造高塔
- jzoj3086,luogu3831-[SHOI2012]回家的路【最短路,拆点】
- 深入剖解linux逻辑卷LVM
- Java—Queue队列详解(Deque/PriorityQueue/Deque/ArrayDeque/LinkedList)
- 快速计算Distinct Count
- 动态设置HTML:v-html
- Apache Flink Meetup 8.7 深圳站改为线上
- 猴子数据让你深刻了解微信富媒体
- BMP测试图片及显示源码
- java公路中轴_技术帖 自行车中轴的种类 入门车友请细读
- 技术前沿与经典文章22:继牛顿以后最伟大的物理学家——詹姆斯·克拉克·麦克斯韦
- 小红书用户画像分析_用户行为研究:如何做用户画像分析
- 注册域名dns服务器,dns服务器有什么用?如何用贝锐注册域名?
- 计算机网络atm功能,现代计算机网络原理4ATM交换技术.ppt
- 如何搭建用户体验指标体系?
- Windows 利用Anaconda创建pytorch等环境
热门文章
- LINUX下多路径(multi-path)介绍及使用
- 关于LeNet-5卷积神经网络 S2层与C3层连接的参数计算的思考???
- 四大猛壳之一的VMProtect轻松保护你的程序
- 经典算法题随机从连续的100个不重复数中取出100个不重复随机数
- IOS开发笔记 IOS如何访问通讯录
- Form表单只提交field的值,而不进行页面跳转
- 算法导论8-5习题解答(平均排序)
- 拓端tecdat荣获腾讯云+社区年度最佳作者奖
- 拓端tecdat|机器学习:在SAS中运行随机森林
- 拓端tecdat|Python Monte Carlo K-Means聚类实战研究