}
void Function(MyClass_B &myB);
private:
string m_name;
};
//B 类
class MyClass_B
{
public:
MyClass_B(string name)
{
m_name = name;
}
//友元函数声明,注意和普通函数的区别
friend void MyClass_A::Function(MyClass_B &myB);
private:
string m_name;
};
//函数定义
void MyClass_A::Function(MyClass_B &myB)
{
cout<
//测试代码
int main(int argc,char* argv[])
{
MyClass_A testA("Class A");
MyClass_B testB("Class B");
testA.Function(testB);
return 0;
}
#include
using namespace std;
class MyClass_B;
//A 类
class MyClass_A
{
public:
MyClass_A(string name)
{
m_name = name;
}
void Function(MyClass_B &myB);
private:
string m_name;
};
//B 类
class MyClass_B
{
public:
MyClass_B(string name)
{
m_name = name;
}
//友元函数声明,注意和普通函数的区别
friend void MyClass_A::Function(MyClass_B &myB);
private:
string m_name;
};
//函数定义
void MyClass_A::Function(MyClass_B &myB)
{
cout<
//测试代码
int main(int argc,char* argv[])
{
MyClass_A testA("Class A");
MyClass_B testB("Class B");
testA.Function(testB);
return 0;
}
我们可以看到,B 类,对 A 类其中的一个函数开放,其结果是这个函数可以访问 B 类的所有元素。
四. 整个类也可以是另一个类的友元
友类的每个成员函数都可以访问另一个类的所有成员。
示例代码如下:
[cpp] #include
using namespace std;
//类 A
class MyClass_B;
class MyClass_A
{
public:
MyClass_A(string name)
{
m_name = name;
}
//友元类声明
friend class MyClass_B;
private:
string m_name;
};
//类 B
class MyClass_B
{
public:
MyClass_B(string name)
{
m_name = name;
}
void Display(MyClass_A &myA);
private:
string m_name;
};
//成员函数
void MyClass_B::Display(MyClass_A &myA)
{
cout<
MyClass_A test("test");
cout<
//测试代码
int main(int argc,char* argv[])
{
MyClass_A testA("Class A");
MyClass_B testB("Class B");
testB.Display(testA);
return 0;
}
#include
using namespace std;
//类 A
class MyClass_B;
class MyClass_A
{
public:
MyClass_A(string name)
{
m_name = name;
}
//友元类声明
friend class MyClass_B;
private:
string m_name;
};
//类 B
class MyClass_B
{
public:
MyClass_B(string name)
{
m_name = name;
}
void Display(MyClass_A &myA);
private:
string m_name;
};
//成员函数 MyClass_A test("test"); cout< //测试代码 return 0; 简单的说就是:声明一个友元函数或者是友元类,就是要把自己完全暴露给对方。 作者 lwbeyond
void MyClass_B::Display(MyClass_A &myA)
{
cout<
int main(int argc,char* argv[])
{
MyClass_A testA("Class A");
MyClass_B testB("Class B");
testB.Display(testA);
}此时B可以访问A的所有元素,就好像A在B里面一样。
五. 总结