在程序里,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术
友元的目的就是让一个函数或者类访问另一个类中的私有成员,友元的关键字为friend
友元的三种实现:
1)全局函数做友元
2)类做友元
3)成员函数做友元
全局函数做友元:


友元类(类做友元):



成员函数做友元【为啥顺序不能变??】:


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| #include<iostream> **using** **namespace** std;
**class** Building;
**class** goodGay{ **public**: Building *building; //可访问Building中的私有成员 **void** visit(); //不可访问Building中的私有成员 **void** visit1(); goodGay(); };
**class** Building { **friend** **void** goodGay::visit();//表示goodGay类中的成员函数visit()作为本类的好朋友 **public**: Building(){ SittingRoom = “客厅”; BedRoom = “卧室”; } **public**: string SittingRoom; **private**: string BedRoom; };
goodGay::goodGay() { building = **new** Building; }
**void** goodGay::visit() { cout<<“visit函数正在访问:”<<building->SittingRoom<<endl; cout<<“visit函数正在访问:”<<building->BedRoom<<endl; }
**void** goodGay::visit1() { cout<<“visit2函数正在访问:”<<building->SittingRoom<<endl; //cout<<“visit函数正在访问:”<<building->BedRoom<<endl; }
**int** main() { goodGay gg; gg.visit(); gg.visit1();
}
|