回覆列表
  • 1 # 看吧看吧開吧

    friend有兩個用法,一個友元函式,一個友元類。

    #include <iostream>

    class B;

    class A

    {

    public:

    A() : _a(0) {}

    void print() const

    {

    std::cout << _a << std::endl;

    }

    private:

    friend class B; // 友元類

    friend void set(A &a, int v); // 友元函式

    int _a;

    };

    void set(A &a, int v = 1)

    {

    // 這一個就是友元函式的實現

    a._a = v;

    }

    class B

    {

    public:

    void set(A &a, int v)

    {

    a._a = v;

    }

    };

    int main(const char *args, char *argv[])

    {

    A a;

    // a._a = 1; // 編譯不透過

    set(a, 1);

    a.print(); // 輸出:1

    B().set(a, 2);

    a.print(); // 輸出:2

    }

  • 中秋節和大豐收的關聯?
  • 小米note3中的應用商城怎麼一直閃退?