zoukankan      html  css  js  c++  java
  • C++关键字friend-友元

    友元friend 机制允许一个类授权其他的函数访问它的非公有成员。友元声明以关键字friend 开头,它只能出现在类的声明中。由于友元不是授权友谊的类的成员,所以它们不受其在类体中被声明的public private 和protected 区的影响,这里我们选择把所有友元声明组织起来放在类头之后。

    1 class Screen {
    2     friend istream&
    3         operator>>( istream&, Screen& );
    4     friend ostream&
    5         operator<< ( ostream&, const Screen& );
    6     public:
    7     // ... Screen 类的其他部分
    8 };

    一个友元可以是一个普通函数,一个前面定义的类的成员函数也可以是一个完整的类。在使一个类成为友元时友元类的所有成员函数都被给予访问授权友谊的类的非公有成员的权力

    友元函数:(普通函数)

    class Window {
        friend bool is_equal( Screen &, Window & );
        // ...
    };
    
    bool is_equal(Screen &, Window &) {
      //函数中可以直接使用Window中的非公有成员
      //...    
    }

       (成员函数)

    class Window;
    class Screen {
        public:
        // copy 是类 Screen 的成员
        Screen& copy( Window & );
        // ...
    };
    class Window {
        // copy 是类 Window 的一个友元
        friend Screen& Screen::copy( Window & );
        // ...
    };

    友元类:(Screen类是Window类的友元类,Screen可以访问Window中的非公有成员)

    class Screen;
    class Window {
        friend class Screen;
    };
  • 相关阅读:
    JavaScript 类型转换
    Bjarne Stroustrup
    格拉丘纳斯的上下级关系理论
    成功者必须具备的三大技能
    ASP.NET/Perl.NET (转)
    iPhone/Mac ObjectiveC内存管理教程和原理剖析
    objectivec日期之间比较可用以下方法
    Centos下安装中文输入法
    C#中数字的四舍五入与只取整
    关于Application.Lock和Lock(obj)
  • 原文地址:https://www.cnblogs.com/ruanzhao/p/3192353.html
Copyright © 2011-2022 走看看