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成员或全局变量时,则不需要对象做参数。

  • 相关阅读:
    十天冲刺个人博客四
    十天冲刺个人博客三
    十天冲刺个人博客二
    软件工程课堂七(单词统计)
    十天冲刺个人博客一
    软件工程第九周总结
    人月神话阅读笔记03
    软件工程课堂六(《飘》单词统计)
    软件工程第八周总结
    跨域
  • 原文地址:https://www.cnblogs.com/mollnn/p/12599000.html
Copyright © 2011-2022 走看看