为什么友元函数不能够调用Building中的私有属性,而直接友元类却能够调用Building中的私有属性??


#include
#include
using namespace std;

class Building//创建一个建筑类
{
    friend void  Goodgay::visit();//友元Goodgay中的函数
public:
    Building()
    {
        m_sitting = "客厅";
        m_badroom = "卧室";
    }
    string m_sitting;
private:
    string m_badroom;
};


class Goodgay //创建Goodgay类
{
public:
    void visit()
    {
        cout << building.m_badroom << endl;//其不能访问building.m_badroom
        cout << building.m_sitting << endl;
    }
    int m_age;
private:
    Building building;
};


void test()
{
    Goodgay p;
    p.visit();
}
int main()
{
    test();
    return 0;
}
#include
#include
using namespace std;


class Building
{
    friend class Goodgay;
public:
    Building()
    {
        m_sitting = "客厅";
        m_badroom = "卧室";
    }
    string m_sitting;
private:
    string m_badroom;
};


class Goodgay
{
public:
    void visit()
    {
        cout << building.m_badroom << endl;//其能够访问building.m_badroom
        cout << building.m_sitting << endl;
    }
    int m_age;
private:
    Building building;
};


void test()
{
    Goodgay p;
    p.visit();
}
int main()
{
    test();
    return 0;
}