朋友功能随机行为

时间:2018-07-17 01:11:33

标签: c++

#include<iostream>

class FooA
{
private :
friend class FooB;
    void Hello();
    void Hello2();
private:
    void Hello3();
    int m_iData;
};

class FooB
{
    void fun()
    {
        FooA objA;
        objA.Hello();  // right
        objA.Hello2(); // right
        objA.Hello3(); // right
        //ojbA.m_iData = 0; // compile error 
    }
};

通常,如果我们访问对象专有的数据成员函数或成员变量,则会直接引发错误。

但是在这种情况下,它如何能够访问Hello(),Hello2(),Hello3()函数以及为什么它在访问m_iData时引发错误。

1 个答案:

答案 0 :(得分:1)

objA中的b和j已被交换以形成未知标识符ojbA

ojbA.m_iData = 0;更改为objA.m_iData = 0;