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;
    };
  • 相关阅读:
    mysql,apache,php的关系
    简析 Tomcat 、Nginx 与 Apache 的区别
    Linux中涉及到环境变量的文件
    如何在Linux启动的时候执行一个命令
    sed的额外用法(网摘)
    shell脚本执行方式
    在rhel7上搭建centos7的yum源
    MYSQL三种安装方式--二进制包安装
    ssh连接不上排查方法总结
    MySQL启动很慢的原因
  • 原文地址:https://www.cnblogs.com/ruanzhao/p/3192353.html
Copyright © 2011-2022 走看看