C+±学习记录-面向对象-友元2
一、友元的实现方式
1.全局函数做友元
2.类做友元
3.成员函数做友元
(1)、全局函数做友元
语法: friend 返回值类型 函数名(参数列表){ };
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| class p { friend void setp(p* p1);
public: string name; protected: string age;
};
void setp(p *p1) { p1->name = "神里绫华"; p1->age = "十八岁"; }
|
(2)、类做友元(友元类)
语法:friend class 类名;
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| class chara { public: string name; private: string weapon; };
class search { public: void printinfo(chara* ch) { cout << "角色:" << ch->name << endl; cout << "使用武器:" << ch->weapon << endl; } };
|
添加友元类之后:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class chara { friend class search; public: string name; private: string weapon; };
class search { public: void printinfo(chara* ch) { cout << "角色:" << ch->name << endl; cout << "使用武器:" << ch->weapon << endl; } };
|
(3)、成员函数做友元
语法: friend 返回值类型 类名::函数名(参数列表);
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class chara { friend void search::printinfo(chara* ch); public: string name; private: string weapon; };
class search { public: void printinfo(chara* ch) { cout << "角色:" << ch->name << endl; cout << "使用武器:" << ch->weapon << endl; } };
|
但是这样编译器依然会报错