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;
    };
  • 相关阅读:
    Hibernate实现CRUD的例子小结
    AspnetPager表格标题排序功能
    Microsoft企业库配置问题
    orm比较
    外语培训网求鉴定
    DIV随滚动条滚动而滚动
    图片切换效果展示
    转载C#委托之多播委托( 二)
    LINQ 图解
    不用ajax调用搞后台小技巧
  • 原文地址:https://www.cnblogs.com/ruanzhao/p/3192353.html
Copyright © 2011-2022 走看看