友元函数
class MyObject
{
//告诉编译器, 该函数可以访问该类的任何成员
friend void PrintObject(MyObject* pObject);
private:
int x;
public:
MyObject() {}
MyObject(int x)
{
this->x = x;
}
};
void PrintObject(MyObject* pObject)
{
printf("%d\n", pObject->x);
}
友元类
class MyObject
{
//友元类
friend class TestFriend;
private:
int x;
public:
MyObject() {}
MyObject(int x)
{
this->x = x;
}
};
class TestFriend
{
public:
void Fn(MyObject* pObject)
{
printf("%d\n", pObject->x);
}
};
注意:TestFriend类中的函数都可以直接访问MyObject中的私有成员,但只是单向的。