偷偷拿来记录一下萌新的cs路——day 28
友元
#includeusing namespace std; class Building { friend void goodFriend(Building* building); // goodFriend全局函数是Building类的好朋友,可访问类中私有内容 public: Building() { m_SittingRoom = "客厅"; m_BedRoom = "卧室"; } string m_SittingRoom; private: string m_BedRoom; }; // 全局函数 void goodFriend(Building *building) { cout << "好朋友全局函数正在访问:" << building->m_SittingRoom << endl; cout << "好朋友全局函数正在访问:" << building->m_BedRoom << endl; } void test01() { Building b; goodFriend(&b); } int main() { test01(); return 0; }
运行结果:
类作友元
#includeusing namespace std; class Building; // 类的声明 class GoodFriend { public: GoodFriend(); void visit(); // 参观函数 访问Building中属性 Building* b; }; class Building { friend class GoodFriend; public: Building(); string m_SittingRoom; private: string m_BedRoom; }; // 类外写成员函数 Building::Building() { m_SittingRoom = "客厅"; m_BedRoom = "卧室"; } GoodFriend::GoodFriend() { // 创造建筑物对象 b = new Building; } void GoodFriend::visit() { cout << "好朋友类正在访问:" << b->m_SittingRoom << endl; cout << "好朋友类正在访问:" << b->m_BedRoom << endl; } void test01() { GoodFriend g; g.visit(); } int main() { test01(); return 0; }
运行结果:
成员函数作友元
#include#include using namespace std; class Building; class GoodFriend { public: GoodFriend(); void visit(); // 使visit函数可访问Building中私有成员 void visit2(); // visit2不可访问 Building* b; }; class Building { // GoodFriend类中的visit作为Building的friend可以访问私有成员 friend void GoodFriend::visit(); friend void GoodFriend::visit2(); public: Building(); // 构造函数声明 string m_SittingRoom; private: string m_BedRoom; }; // 类外实现成员函数 Building::Building() { m_SittingRoom = "客厅"; m_BedRoom = "卧室"; } GoodFriend::GoodFriend() { b = new Building; } void GoodFriend::visit() { cout << "visit函数正在访问:" << b->m_SittingRoom << endl; cout << "visit函数正在访问:" << b->m_BedRoom << endl; } void GoodFriend::visit2() { cout << "visit2函数正在访问:" << b->m_SittingRoom << endl; //cout << "visit2函数正在访问:" << b->m_BedRoom << endl; } void test01() { GoodFriend g; g.visit(); g.visit2(); } int main() { test01(); return 0; }
其中 GoodFriend类不能在 Building类后定义,否则会因无法识别 friend void GoodFriend::visit/visit2(); 而报错。
运行结果:
以后学了更多知识还会回来更新的!有误之处恳请大佬指正,提前感谢!
暑期编程PK赛 得CSDN机械键盘等精美礼品!


