c++中的友元的关键字为friend,写在类的定义中(开头),表示这个友元函数或类可以访问该类的私有成员。类的友元分为三种:
1.全局函数做友元
2.成员函数做友元
3.类做友元
如下是一段代码示例:
#include<iostream>
using namespace std;
class Sport;
// 友元类
class PlayBasketball {
public:
Sport* sporter;
void visit();
void friendVisit();
};
class Sport {
friend void PlayBasketball::friendVisit();// 成员函数做友元
friend class PlayBasketball;// 友元类
friend void visit(Sport* player);// 全局函数做友元
private:
void doSport() {
cout << "做运动" << endl;
}
};
void PlayBasketball::visit() {
cout << "友元类正在 ";
sporter->doSport();
}
void PlayBasketball::friendVisit() {
cout << "友元成员函数正在 ";
sporter->doSport();
}
// 全局函数做友元
void visit(Sport *player) {
cout << "友元全局函数正在 ";
player->doSport();
}
int main() {
Sport* player1 = new Sport;
PlayBasketball *player2 = new PlayBasketball;
player2->friendVisit();
player2->visit();
visit(player1);
return 0;
}