友元函数要在一个类体内说明,形式为:

形式

friend 类型名 友元函数名(形参表);
然后在类体外对友元函数进行定义,定义的格式和普通函数相同,但可以通过对象作为参数直接访问对象的私有成员

友元函数说明如下

1)必须在类的说明中说明友元函数,说明时以关键字friend开头,后跟友元函数的函数原型,友元函数的说明可以出现在类的任何地方,包括在private和public部分;
2)注意友元函数不是类的成员函数,所以友元函数的实现和普通函数一样,在实现时不用"::"指示属于哪个类,只有成员函数才使用"::"作用域符号;
3)友元函数不能直接访问类的成员,只能访问对象成员,
4)友元函数可以访问对象的私有成员,但普通函数不行;
5)调用友元函数时,在实际参数中需要指出要访问的对象,
6)类与类之间的友元关系不能继承。

友元函数的访问权限和注意事项相关推荐

  1. 友元函数可以访问私有成员吗_C++的友元函数和友元类

    C++使用类对数据进行隐藏和封装,类的数据成员一般定义为私有成员,而将提供类与外界通讯接口的成员函数定义为公有的. C++类成员的三种访问权限: public:可以被该类中的函数.子类的函数.友元函数 ...

  2. Solidity基础入门知识(十)函数的访问权限和可见性

    链客,专为开发者而生,有问必答! 此文章来自链客区块链技术问答社区,未经允许拒绝转载. 下面来继续介绍作为一个分布式网络语言所特有的internal和external这两种不同的函数调用方式,以及So ...

  3. C++知识点11——this指针,const成员函数,访问权限控制

    1.this指针 每个类都有this指针,this指针指向this指针指向的是类的对象本身 class A { public:A() {}~A() {}void func() {cout<< ...

  4. C++(纯)虚函数重写时访问权限更改问题

    我们知道在Java中是自动实现多态的,Java中规定重写的方法的访问权限不能缩小.那么在C++中我们实现多态的时候是否可以更改(缩小)访问权限呢? 经过测试,得到的答案如下:如果用基类指针指向派生类对 ...

  5. 把类的成员函数声明为友元函数,但不能访问私有成员的原因和解决办法

    定义类X,类Y,在类X中声明类Y的成员函数g()为类X的友元函数 常见的几种错误写法及原因: 错误写法1 class Y; class X {public:X(int i) :i(i) {}frien ...

  6. 友元函数、友元类、访问私有数据成员、友元关系[C++]

    友元函数(friend function) 1. 什么是友元函数?     一个类的私有数据成员通常只能由类的函数成员来访问,而友元函数可以访问类的私有数据成员,也能访问其保护成员 2. 友元函数的用 ...

  7. abstract类中不可以有private的成员_C++类成员的三种访问权限:public/protected/private...

    1.访问限定符 C++ 通过 public.protected.private 三个关键字来控制成员变量和成员函数的访问权限(也称为可见性),分别表示:公有的.受保护的.私有的. class 2.访问 ...

  8. c语言的友元函数的用法,C++友元函数和友元类概念解析

    一.友元函数 友元函数是一种特殊的函数,它需要在类体内进行说明,可以访问类的私有成员和保护成员,但又不是类的成员函数.友元函数的说明如下: friend 数据类型函数名(参数) 其中,friend是说 ...

  9. C++ 类的知识 | 构造函数再探、匿名对象、友元函数、内部类、类的const成员、类的static成员

    文章目录 构造函数再探 以下代码共调用多少次拷贝构造函数 委托构造函数 概念 形式 匿名对象 友元 友元的声明 友元类 令成员函数作为友元 函数重载和友元 注意 内部类 特性 类的const成员 可变 ...

最新文章

  1. JAVA泛型的基本使用
  2. 函数的相关操作——利用函数翻转任意数组||利用函数冒泡排序||利用函数判断闰年
  3. jstack命令案例分析:对wait的线程没有调用notify()导致程序无法停止
  4. hashMap put方法 第二行代码
  5. 随便写写2014创业记(二)
  6. 输入三个数,按照由大到小的顺序输出
  7. 从源码说说dispatchTouchEvent与onTouchEvent的关系以及OnTouchListener的用法
  8. mac mysql 默认字符集_MacOS中Mysql设置默认字符集
  9. 操作系统(李治军) L10用户级线程
  10. DHCP协议执详解,DHCP协议执行流程、配置方式
  11. Spring+MyBatis企业应用实战 - 笔记
  12. 简单细胞自动机代码实现
  13. JavaSe基础总结
  14. 【Python数据科学】多表关联 merge、join、concat
  15. 编写代码的「八荣八耻」(上篇)
  16. 机器学习与网络安全(一)
  17. 深度思考故事1:贴发票和贴海报
  18. 怎么保护地球生物多样性
  19. java调用excel在页面生成饼状图_Java 在 Excel 中创建饼图/环形图
  20. F1-F12键的作用

热门文章

  1. sklearn相关积累
  2. Java对MongoDb的CURD操作
  3. 最简单的排序算法(C和C++实现)
  4. Fatal error in launcher: Unable to create process using ''之解决办法
  5. lambda方法引用总结——烧脑吃透
  6. Style Lessons in Clarity and Grace (11th Edition)中文翻译
  7. STL泛型编程之map映照容器
  8. @JVM内存模型(运行时数据区)
  9. Sharepoint2013:在页面上显示错误信息
  10. win8笔记本关闭小键盘