zoukankan      html  css  js  c++  java
  • C++友元

    通俗说法:

    如果将类的封装比喻成一堵墙的话,那么友元机制就像墙上了开了一个门,那些得 到允许的类或函数允许通过这个门访问一般的类或者函数无法访问的私有属性和方
    法。友元机制使类的封装性得到消弱,所以使用时一定要慎重。

    友元只授权特有对象访问自己(类中)的私有函数或数据,同时避免频繁调用的处理器开销。

    友元只能包含不能继承,只有单向性,不具有可交换性和可传递性。

    C++良好的共有、私有、受保护机制可以保证封装的安全访问,但友元刚好相反,它以牺牲封装性为代价,可以通过友元函数、友元类、友元成员函数让不同访问级别的对象可以通讯访问:

    友元函数:可以让同类的public函数可以访问本类的私有数据,格式:本类的共有函数前加关键字“friend”。友元函数不属于类的成员函数而是定义在外部,不需要加类限定,声明可以放在public部分,也可以放在private部分。

    友元类:只能是包含关系,B的整个成员函数都作为A类中的一个成员,则B就直接访问A(墙和门的例子,主要应用场合是当B类要存取A类时),格式:本类的共有数据成员中加加关键字“friend class 类型”。

    友元成员函数:B的成员函数作为友元成为A的友元成员函数,则B就可以访问A的函数,但必须先声明B,再声明B的函数是A的友元成员函数,最后才能定义友元函数。格式:本类的public成员函数中加加关键字“friend 返回类型 B::函数名”

           一个函数可以成为多个类的的友元函数,只需要在各个类中将其声明即可

    具体应用:可以通过友元的重载,在不同类中使用IO流库;可以让不支持类的其它编程语言(C/汇编)和C++融合编程。

  • 相关阅读:
    CentOS系统下NFS服务器
    网络封包分析
    Android端抓包方法
    SQL Server 2008从基础开始学习的历程(1)------创建表与查询
    序--CentOS6.5 mini 安装和基本配置
    MonkeyRunner(猴哥快跑)常用类方法总结
    python 开源数据抓取框架scrapy
    pycharm最新版注册
    python flask下传数据到js
    centos打架django + mysql环境
  • 原文地址:https://www.cnblogs.com/jieruishu/p/9486514.html
Copyright © 2011-2022 走看看