友元(c++友元介绍)
友元介绍
- 友元是一种允许非类成员函数访问类的非公有成员的一种机制。
- 可以把一个函数指定为类的友元,也可以把整个类指定为另一个类的友元
- 友元函数
- 友元类
友元函数
- 友元函数在类作用域外定义,但它需要在类体中进行说明
- 为了与该类的成员函数加以区别,定义的方式是在类中用关键字friend说明该函数,格式如下:
- friend 类型 友元函数名(参数表);
- 友元的作用在于提高程序的运行效率
友元函数注意事项
- 友元函数不是类的成员函数,在函数体中访问对象的成员,必须用对象名加运算符“.”加对象成员名。但友元函数可以访问类中的所有成员(公有的、私有的、保护的),一般函数只能访问类的公有成员。
- 友元函数不受类中的访问权限关键字限制,可以把它放在类的公有、私有、保护部分,但结果一样。
- 某类的友元函数的作用域并非该类作用域。如果该友元函数是另一类的成员函数,则其作用域为另一类的作用域,否则与一般函数相同。
- 友元函数破坏了面向对象程序设计类的封装性,所以友元函数如不是必须使用,则尽可能少用。或者用其他手段保证封装性。
友元类
- 如果某类B的成员函数会频繁的存取另一个类A的数据成员,而A的数据成员的Private/Protected限制造成B存取的麻烦,B只能通过A的Public的成员函数进行间接存取
- 把B做成A类的友元类,即A类向B类开发其Private/Protected内容,让B直接存取。
- 友元类:一个类可以作另一个类的友元
- 友元类的所有成员函数都是另一个类的友元函数
- 友元类的声明:
- friend class 类名;
友元类注意事项
- 友元关系是单向的
- 友元关系不能被传递
- 友元关系不能被继承
友元(c++友元介绍)相关推荐
- 【C++ 基础篇:21】:friend 友元四连问:什么是友元?友元类?友元函数?什么时候用友元?
本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇.STL 篇.高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C++的三大特 ...
- 【C++ 语言】面向对象 ( 成员函数 | 常量函数 | 友元函数 | 友元类 | 单例类 )
文章目录 成员函数 常量函数 友元函数 new 创建对象 友元类 单例类 成员函数 此处继续上一篇博客继续向后讲解C++面向对象 类成员方法 , 除了定义构造方法与析构方法之外 , 还可以定义普通的成 ...
- 友元函数 友元类 友元成员函数
友元 一般来说,类内的私有数据是对外不可见的,但在有些情况下,我们需要在类外对该类的私有数据进行访问,这就需要用到一种新技术--友元(friend),即在声明前添加关键字friend. 友元关系是单向 ...
- C++友元:友元函数、友元类和友元成员函数
Table of Contents 1.友元函数 2.友元类 3.友元成员函数 友元小结: 参考资料: 有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例 ...
- C++友元和友元函数
目录 访问权限 友元函数 友元 注意 访问权限 我们知道,在C++的类中有私有成员和公有成员,在类外可以访问类的公有成员,但只有同属于一个类的成员函数能够访问私有成员. 但很多时候,一个类外的函数需要 ...
- 友元(友元函数、友元类、类成员函数的友元)
友元(友元函数.友元类.类成员函数的友元) (friend)友元机制:允许一个类将对其非公有成员的访问权限授予指定的函数或者类. 我们可以将友元大致分为3类: 友元函数 友元类 类成员函数的友元 一: ...
- 为什么要使用友元,友元类
这里写目录标题 为什么要使用友元 友元的两种使用形式 友元类 使用注意 为什么要使用友元 C++是面向对象的,目的之一:封装 封装: 优点之一,就是安全. 缺点:在某些特殊的场合,不是很方便. 华为与 ...
- C++笔记 友元函数 友元类
友元函数 :友元函数是可以直接访问类的私有成员的非成员函数. 它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下: ...
- java 友元_C++ 友元函数 | 菜鸟教程
对教程中的例子,稍加修改,添加了友元类的使用. #include using namespace std; class Box { double width; public: friend void ...
- 友元 java_C++ 友元关系详解
在C++中,在某些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍然阻止一般的访问,这是很方便做到的.例如,被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员.这些操作符不可能为 ...
最新文章
- 恭喜你发现了宝藏,编程习惯-日积月累
- .net 中 using的几种用法
- iPhone12 safeArea顶部区域尺寸变化
- Git之不明觉厉11-利其器source tree
- android java设置颜色_java – 设置背景颜色:Android
- 平顶山学院计算机专业是几本,平顶山学院是几本_是二本还是三本大学?
- 面向对象程序设计课程进度条
- 前端学习(693):for循环案例之求出偶数奇数之和
- 《Head First设计模式》第五章笔记-单件模式
- Python_模块Module
- 网站可行性报告范文_邢台写可行性报告写立项报告范文-环建
- Android中经纬度与度分秒互转
- OneR算法python实现
- 三代UHS超高速SD卡
- Android gradient 三色渐变背景 Shap
- 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素
- Android学习之运用多媒体
- 百分点认知智能实验室出品:情感分析在舆情中的研发实践(上)
- python 画风矢量图
- THE WAVELET THEORY: A MATHEMATICAL APPROACH
热门文章
- HTTP服务器的本质
- Python告诉你三体人有多惨
- 服务器php环境搭建教程,PHP服务端环境搭建图文详解
- iptable防火墙
- 开源精选 - Spark个性化推荐算法
- git解决enter passphrase for key
- Esri和阿里云合作将增强位置智能技术带给云用户
- 物联网卡欠费停机怎么办?
- 脱发?没对象?格子衫?这些对程序员的误解该停停了!
- linux安装错误代码1,gdal安装错误“错误:命令'x86-linux-gnu-gcc'失败,退出状态为1”...