本文主要是介绍friend class和friend functions,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C++中的friend class 用法总结-CSDN博客
C++:友元(看这一篇就够了)_c++ 友元-CSDN博客
1.
我们希望可以在类B中直接设置类A的私有或保护成员变量的值。
class A
{
private:int data;
};class B
{
private:A * a;
private:void setData(int value){a->data = value;}
};
这样写是不行的:
这样写就可以了:
class A
{
private:int data;friend class B;
};class B
{
private:A * a;
private:void setData(int value){a->data = value;}
};
这样B就是A的友元类了,B是A的朋友,所以B可以直接访问A的private和protected成员。
2.
友元函数
允许一个函数不需要通过类的public接口就能够访问到类中的private和protected成员
class A
{
private:int data;friend void setData(A * a,int value);
};
void setData(A * a,int value)
{a->data = value;
}
3.类中的友元函数:
class A;
class B
{
private:A * a;
private:void setData(int value);
};class A
{
private:int data;friend void B::setData(int value);
};void B::setData(int value)
{a->data = value;
}
这样写的话:
A是无法访问B的setData函数的
需改成:
class A;
class B
{
private:A * a;
public:void setData(int value);
};class A
{
private:int data;friend void B::setData(int value);
};void B::setData(int value)
{a->data = value;
}
public:
void setData(int value);
这篇关于friend class和friend functions的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!