zoukankan      html  css  js  c++  java
  • C++ 友元函数与友元类

    友元函数定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。

    尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。调用友元函数不需要通过对象和指针作为句柄。

    class Box {
       double width;
    public:
       friend void printWidth( Box box );
       void setWidth( double wid );
    };
    void printWidth( Box box ) {
       cout << "Width of box : " << box.width <<endl;
    }
    

    友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。

    class Box {
        double width;
    public:
        friend void printWidth(Box box);
        friend class BigBox;
        void setWidth(double wid);
    };
    
    class BigBox {
    public :
        void Print(int width, Box &box) {
            box.setWidth(width);
            cout << "Width of box : " << box.width << endl;
        }
    };
    

    注意友元函数和友元类的声明都要在成员被使用的类中定义。换言之,只能主动开放,不能外部强上。

    参数传递

    友元函数没有this指针,要访问非static成员时,需要对象做参数;要访问static成员或全局变量时,则不需要对象做参数。

  • 相关阅读:
    Python从入门到精通系列文章总目录
    使用465端口加密发邮件
    kubernetes学习14—Dashboard搭建和认证
    kubernetes学习01—kubernetes介绍
    CSS基础
    SVN 命令行的使用
    Python判断字符集
    Flask框架(2)-JinJa2模板
    搭建ntp服务器
    Ansible的Playbook的编写
  • 原文地址:https://www.cnblogs.com/mollnn/p/12599000.html
Copyright © 2011-2022 走看看