class one{
 public:
  one(){};
  operator two ( ) const { return two(); }
  friend ostream& operator << ( ostream& os, const one& o) //成员函数还是全局函数?
  {
   return os << " i " << o.i;
  }
  int i;
 };

定义一个友元函数为内联函数不会改变友元函数的状态而且它仍是一个全局函数而不是一个类的成员函数。

什么是友元(friend)?
允许另一个类或函数访问你的类的东西。

友元可以是函数或者是其他的类。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。

友元函数要在一个类体内说明,形式为:
friend 类型名 友元函数名(形参表);
然后在类体外对友元函数进行定义,定义的格式和普通函数相同,但可以通过对象作为参数直接访问对象的私有成员
友元函数说明如下:
1)必须在类的说明中说明友元函数,说明时以关键字friend开头,后跟友元函数的函数原型,友元函数的说明可以出现在类的任何地方,包括在private和public部分;
2)注意友元函数不是类的成员函数,所以友元函数的实现和普通函数一样,在实现时不用"::"指示属于哪个类,只有成员函数才使用"::"作用域符号;
3)友元函数不能直接访问类的成员,只能访问对象成员,
4)友元函数可以访问对象的私有成员,但普通函数不行;
5)调用友元函数时,在实际参数中需要指出要访问的对象,

明天预习:delete一个void指针,会删除它指向的内存吗?
答案当然是,会释放它指向的内存,但不会调用对象的析构函数。

转载于:https://www.cnblogs.com/Frodo/archive/2007/08/20/862937.html

老陈学 C++ 序列之二: 友元函数相关推荐

  1. 跟着老陈学嵌入式-C语言入门之类Linux编译环境搭建

    1.安装notepad(敲代码的地方) 2.安装gcc工具包mwind(代码编辑工具) 安装后解压,但是用命令提示符不能使用 解决办法:此电脑-属性-高级系统设置-环境变量-双击path-新建-注册( ...

  2. 对于牛老师作业陈老师作业补充(老陈、小石头的典型用户、用例图、场景)...

    对于牛老师作业陈老师作业补充(老陈,小石头的典型用户.用例图.场景) 一  :  典型用户 (1)名字:小石头 性别:男 年龄:    8岁 职业:学生 收入:无 知识层次能力:小学二年级 生活/工作 ...

  3. 认真开始学习C语言的2天总结(师承上官可编程----老陈)

    其实很不好意思说是老陈学生的,因为拖了很久才开始来认真的学习 说是来总结,其实也算是是给自己一个复盘的时间,把自己所学的东西回顾一下 一.基础知识 1.程序初识,前面先是跟着老师了解计算机程序的基础知 ...

  4. 跟老杨学java系列(一)前传

    跟老杨学java系列(一)前传 首先声明一下哈,本人文笔水平有限,不喜勿喷.欢迎大家留言探讨技术问题.其他问题概不回复. 上台来首先做个自我介绍(~~偷师相声开场白),本人从事IT开发行业快二十个年头 ...

  5. 零基础入门学Python(十二)—— 魔法方法(下)

    零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(下) 1. 构造和析构 2. 算术运算 3. 简单定制 4. 属性访问 5. 描述 ...

  6. 陈学智升任VMware全球副总裁、大中华区总裁,面临四个挑战

    [全球云观察 | 科技明说]VMware官方消息称,10月11日正式任命陈学智先生(Barry Chen)担任全球副总裁.大中华区总裁.陈学智先生将全权负责VMware在中国大陆.香港特别行政区.澳门 ...

  7. 老猿学5G扫盲贴:中国移动网络侧CHF主要功能及计费处理的主要过程

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...

  8. 老猿学5G扫盲贴:移动边缘计算(Mobile Edge Computing, MEC)

    版权声明:本文为CSDN博主「魏晓蕾」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/gongxifaca ...

  9. 老猿学5G专栏文章目录

    ☞ ░ 前往老猿Python博文目录 ░ 一.3GPP规范文档及其他推荐阅读博文 老猿学5G扫盲贴:3GPP规范文档命名规则及同系列文档阅读指南 老猿学5G扫盲贴:3GPP规范中部分与计费相关的规范序 ...

最新文章

  1. spring-data-mongodb必须了解的操作
  2. 跟老齐学python轻松入门_【英语动词后面跟什么词?】作业帮
  3. TinyBERT搜索: 比BERT快10倍,小20倍
  4. (98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
  5. 7步搞定Python数据可视化,业界大牛出品教程,Jupyter、Colab都有在线版
  6. ISA三向外围网络模板说明
  7. SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
  8. centos snmp配置_如何在CentOS系统中安装配置SNMP服务
  9. 参加开发竞赛遇到的问题【总结】
  10. eclipse工程运行正常但是工程有红叉的问题
  11. java的k-means算法_k-means聚类算法的java实现描述!
  12. 项目管理的成功方程式
  13. 51单片机数码管小数点c语言,求助一个51单片机控制的数码管计算器带小数点功能的...
  14. wpf之通过MVVM绑定MouseEnter
  15. 程序防止多开的几种常见方法
  16. php与html5怎么弹出消息框,jQuery实现消息弹出框效果
  17. python判断是否有重复单词_Python:在字符串列表中查找未知的重复单词
  18. DeepStream3必须安装Video_Codec_SDK9
  19. Xcode 9有什么新功能?
  20. SpringBoot 项目(若依脚手架)2

热门文章

  1. elementui vue的html随机点名器软件网页版源码1.1
  2. jquery点击弹出播放视频并显示遮罩层
  3. Java操作——获取文件扩展名,去掉文件扩展名
  4. JSON是什么?如何产生的?
  5. leetcode601. 体育馆的人流量(SQL)
  6. leetcode226 反转二叉树
  7. C++: 21---引用和指针
  8. 算法章节 递归、排序、⼆分查找
  9. c++面向对象高级编程 学习十 function-like classes
  10. Java提高篇 —— Java三大特性之多态