友元介绍

  • 友元是一种允许非类成员函数访问类的非公有成员的一种机制。
  • 可以把一个函数指定为类的友元,也可以把整个类指定为另一个类的友元
    • 友元函数
    • 友元类

友元函数

  • 友元函数在类作用域外定义,但它需要在类体中进行说明
  • 为了与该类的成员函数加以区别,定义的方式是在类中用关键字friend说明该函数,格式如下:
    • friend 类型 友元函数名(参数表);
  • 友元的作用在于提高程序的运行效率

友元函数注意事项

  • 友元函数不是类的成员函数,在函数体中访问对象的成员,必须用对象名加运算符“.”加对象成员名。但友元函数可以访问类中的所有成员(公有的、私有的、保护的),一般函数只能访问类的公有成员。
  • 友元函数不受类中的访问权限关键字限制,可以把它放在类的公有、私有、保护部分,但结果一样。
  • 某类的友元函数的作用域并非该类作用域。如果该友元函数是另一类的成员函数,则其作用域为另一类的作用域,否则与一般函数相同。
  • 友元函数破坏了面向对象程序设计类的封装性,所以友元函数如不是必须使用,则尽可能少用。或者用其他手段保证封装性。

友元类

  • 如果某类B的成员函数会频繁的存取另一个类A的数据成员,而A的数据成员的Private/Protected限制造成B存取的麻烦,B只能通过A的Public的成员函数进行间接存取
  • 把B做成A类的友元类,即A类向B类开发其Private/Protected内容,让B直接存取。
  • 友元类:一个类可以作另一个类的友元
  • 友元类的所有成员函数都是另一个类的友元函数
  • 友元类的声明:
    • friend class 类名;

友元类注意事项

  • 友元关系是单向的
  • 友元关系不能被传递
  • 友元关系不能被继承

友元(c++友元介绍)相关推荐

  1. 【C++ 基础篇:21】:friend 友元四连问:什么是友元?友元类?友元函数?什么时候用友元?

    本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇.STL 篇.高阶数据结构与算法篇,相关重点内容如下: 基础篇:类与对象(涉及C++的三大特 ...

  2. 【C++ 语言】面向对象 ( 成员函数 | 常量函数 | 友元函数 | 友元类 | 单例类 )

    文章目录 成员函数 常量函数 友元函数 new 创建对象 友元类 单例类 成员函数 此处继续上一篇博客继续向后讲解C++面向对象 类成员方法 , 除了定义构造方法与析构方法之外 , 还可以定义普通的成 ...

  3. 友元函数 友元类 友元成员函数

    友元 一般来说,类内的私有数据是对外不可见的,但在有些情况下,我们需要在类外对该类的私有数据进行访问,这就需要用到一种新技术--友元(friend),即在声明前添加关键字friend. 友元关系是单向 ...

  4. C++友元:友元函数、友元类和友元成员函数

    Table of Contents 1.友元函数 2.友元类 3.友元成员函数 友元小结: 参考资料: 有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的.例 ...

  5. C++友元和友元函数

    目录 访问权限 友元函数 友元 注意 访问权限 我们知道,在C++的类中有私有成员和公有成员,在类外可以访问类的公有成员,但只有同属于一个类的成员函数能够访问私有成员. 但很多时候,一个类外的函数需要 ...

  6. 友元(友元函数、友元类、类成员函数的友元)

    友元(友元函数.友元类.类成员函数的友元) (friend)友元机制:允许一个类将对其非公有成员的访问权限授予指定的函数或者类. 我们可以将友元大致分为3类: 友元函数 友元类 类成员函数的友元 一: ...

  7. 为什么要使用友元,友元类

    这里写目录标题 为什么要使用友元 友元的两种使用形式 友元类 使用注意 为什么要使用友元 C++是面向对象的,目的之一:封装 封装: 优点之一,就是安全. 缺点:在某些特殊的场合,不是很方便. 华为与 ...

  8. C++笔记 友元函数 友元类

    友元函数 :友元函数是可以直接访问类的私有成员的非成员函数. 它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下:     ...

  9. java 友元_C++ 友元函数 | 菜鸟教程

    对教程中的例子,稍加修改,添加了友元类的使用. #include using namespace std; class Box { double width; public: friend void ...

  10. 友元 java_C++ 友元关系详解

    在C++中,在某些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍然阻止一般的访问,这是很方便做到的.例如,被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员.这些操作符不可能为 ...

最新文章

  1. 恭喜你发现了宝藏,编程习惯-日积月累
  2. .net 中 using的几种用法
  3. iPhone12 safeArea顶部区域尺寸变化
  4. Git之不明觉厉11-利其器source tree
  5. android java设置颜色_java – 设置背景颜色:Android
  6. 平顶山学院计算机专业是几本,平顶山学院是几本_是二本还是三本大学?
  7. 面向对象程序设计课程进度条
  8. 前端学习(693):for循环案例之求出偶数奇数之和
  9. 《Head First设计模式》第五章笔记-单件模式
  10. Python_模块Module
  11. 网站可行性报告范文_邢台写可行性报告写立项报告范文-环建
  12. Android中经纬度与度分秒互转
  13. OneR算法python实现
  14. 三代UHS超高速SD卡
  15. Android gradient 三色渐变背景 Shap
  16. 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素
  17. Android学习之运用多媒体
  18. 百分点认知智能实验室出品:情感分析在舆情中的研发实践(上)
  19. python 画风矢量图
  20. THE WAVELET THEORY: A MATHEMATICAL APPROACH

热门文章

  1. HTTP服务器的本质
  2. Python告诉你三体人有多惨
  3. 服务器php环境搭建教程,PHP服务端环境搭建图文详解
  4. iptable防火墙
  5. 开源精选 - Spark个性化推荐算法
  6. git解决enter passphrase for key
  7. Esri和阿里云合作将增强位置智能技术带给云用户
  8. 物联网卡欠费停机怎么办?
  9. 脱发?没对象?格子衫?这些对程序员的误解该停停了!
  10. linux安装错误代码1,gdal安装错误“错误:命令'x86-linux-gnu-gcc'失败,退出状态为1”...