使用场景:
1.普通函数定义为类的友元函数,使得普通函数能够访问该类的私有成员和保护成员。
C++
#include <iostream>
using namespace std;
class A
{
friend ostream &operator<<(ostream &_cout, const A &tmp); // 声明为类的友元函数
public:
A(int tmp) : var(tmp)
{
}
private:
int var;
};
ostream &operator<<(ostream &_cout, const A &tmp)
{
_cout << tmp.var;
return _cout;
}
int main()
{
A ex(4);
cout << ex << endl; // 4
return 0;
}
2.友元类:
由于类的 private 和 protected 成员变量只能由类的成员函数访问或者派生类访问,友元类则提供提供一种通用的方法,使得不同类之间可以访问其 private 和 protected 成员变量,用于不同类之间共享数据。
C++
#include <iostream>
using namespace std;
class A
{
friend class B;
public:
A() : var(10){}
A(int tmp) : var(tmp) {}
void fun()
{
cout << "fun():" << var << endl;
}
private:
int var;
};
class B
{
public:
B() {}
void fun()
{
cout << "fun():" << ex.var << endl; // 访问类 A 中的私有成员
}
private:
A ex;
};
int main()
{
B ex;
ex.fun(); // fun():10
return 0;
}
阅读量:2014
点赞量:0
收藏量:0