用到的类
class B
{
private:
int data;
friend class A;//这里他虽然没有找到A类,但并不会报错
public:
void printData()
{
std::cout << data << std::endl;
}
};
class A
{
public:
void testMethod(int data, B& b)
{
b.data = data;
}
};
1、友元函数,可以调用某个类的所有权限的成员
在该类中:friend void/… funcName()
2、友元类:友元类,如果一个类是另一个的友元类,那就可以在该类中访问声明友元类的类中的所有成员
A a;
B b;
a.testMethod(1, b);
b.printData();
执行结果
注意点
- 1、友元关系不能被继承
- 2、友元关系是单向的,A类是B类的友元,但B类并不是A类的友元
- 3、友元关系不能传递
3、将成员函数作为友元函数,我喜欢你的脸,并不代表我喜欢你的全部
缺点:破坏了类的结构,降低了类的结构型
优点:增加了灵活性