49 lines
721 B
C++
49 lines
721 B
C++
|
// 友元
|
||
|
// 友元的类成员函数
|
||
|
#include <iostream>
|
||
|
#include <cstring>
|
||
|
#include <cstdlib>
|
||
|
|
||
|
using namespace std;
|
||
|
|
||
|
class B;
|
||
|
|
||
|
class C
|
||
|
{
|
||
|
public:
|
||
|
// 在此函数内,要访问 B 类中的所有成员,将此函数在 B 类中声明友元
|
||
|
// 先声明,不能实现
|
||
|
void showB(B &b);
|
||
|
};
|
||
|
|
||
|
class B
|
||
|
{
|
||
|
// 声明友元的成员函数
|
||
|
friend void C::showB(B &b);
|
||
|
|
||
|
private:
|
||
|
int x;
|
||
|
|
||
|
public:
|
||
|
B(int x) : x(x) {}
|
||
|
void show()
|
||
|
{
|
||
|
cout << "成员函数 x = " << x << endl;
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// 定义或实现友元的成员函数
|
||
|
void C::showB(B &b)
|
||
|
{
|
||
|
cout << "友元的成员函数 b.x = " << b.x << endl;
|
||
|
}
|
||
|
|
||
|
int main()
|
||
|
{
|
||
|
B b(100);
|
||
|
b.show();
|
||
|
C c;
|
||
|
c.showB(b);
|
||
|
return 0;
|
||
|
}
|