• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++中的friend友元函数详细解析

C++中的friend友元函数详细解析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++友元函数,c++友元函数实例,c++友元类,c++友元,friend友元函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

我们已知道类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,特别是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间开销,而影响程序的运行效率。

为了解决上述问题,提出一种使用友元的方案。友元是一种定义在类外部的普通函数,但它需要在类体内进行说明,为了与该类的成员函数加以区别,在说明时前面加以关键字friend。友元不是成员函数,但是它可以访问类中的私有成员。友元的作用在于提高程序的运行效率(即减少了类型检查和安全性检查等都需要的时间开销),但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。

友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。

友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样。

下面对上面的代码进行输入、输出流的重载:
</div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 有关C++继承与友元、继承与类型转换详解
  • 实例讲解在C++的函数中变量参数及默认参数的使用
  • 简要介绍C++编程中的友元函数和友元类
  • C++虚函数表实例分析
  • C++友元(Friend)用法实例简介
  • C++函数模板与类模板实例解析
  • C++中的friend友元函数详细解析
  • 关于C++中的友元函数的一些总结
  • C++之友元:友元函数和友元类详解
  • 解析C++中不能重载为友元函数的四个运算符

相关文章

  • 2017-05-28C字符串与C++中string的区别详解
  • 2017-05-28基于VC中使用ForceInclude来强制包含stdafx.h的解决方法
  • 2017-05-28Linux下编译C程序的过程
  • 2017-05-28常用排序算法整理分享(快速排序算法、希尔排序)
  • 2017-05-28C++冒泡排序算法实例
  • 2022-04-30对C语言指针的总结
  • 2017-05-28深入理解:Java是类型安全的语言,而C++是非类型安全的语言
  • 2017-05-28VC中CWinThread类以及和createthread API的区别分析
  • 2017-05-28最大对称字符串的算法
  • 2017-05-28C语言与JAVA的区别是什么(推荐)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • linux c语言操作数据库(连接sqlite数据库)
    • MFC中exe图标修改的方法
    • 深入理解二叉树的非递归遍历
    • c语言swap(a,b)值交换的4种实现方法
    • C语言求矩阵的各列元素之和的代码示例
    • c++实现的常见缓存算法和LRU
    • 使用C语言提取子字符串及判断对称子字符串最大长度
    • c语言操作文本的基本使用方法
    • C++ HLSL实现简单的图像处理功能
    • C++利用容器查找重复列功能实现

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有