|
@@ -0,0 +1,83 @@
|
|
|
+//4.4.3 成员函数做友元
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+#include <iostream>
|
|
|
+
|
|
|
+class Building;
|
|
|
+
|
|
|
+class GoodGay
|
|
|
+{
|
|
|
+public:
|
|
|
+ GoodGay();
|
|
|
+
|
|
|
+ void visit(); //让visit函数可以访问Building中私有成员
|
|
|
+
|
|
|
+ void visit2(); //让visit2函数不可以访问Building中私有成员
|
|
|
+
|
|
|
+
|
|
|
+ Building* building;
|
|
|
+};
|
|
|
+
|
|
|
+class Building
|
|
|
+{
|
|
|
+ //告诉编译器 GoodGay类下的visit成员函数作为本类的好朋友,可以访问私有成员
|
|
|
+ friend void GoodGay::visit();
|
|
|
+
|
|
|
+public:
|
|
|
+
|
|
|
+ Building();
|
|
|
+
|
|
|
+public:
|
|
|
+
|
|
|
+ std::string m_SittingRoom; //客厅
|
|
|
+
|
|
|
+private:
|
|
|
+
|
|
|
+ std::string m_BedRoom; //卧室
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+//类外实现成员函数
|
|
|
+
|
|
|
+Building::Building()
|
|
|
+{
|
|
|
+ this->m_BedRoom = "卧室";
|
|
|
+ this->m_SittingRoom = "客厅";
|
|
|
+}
|
|
|
+
|
|
|
+GoodGay::GoodGay()
|
|
|
+{
|
|
|
+ building = new Building;
|
|
|
+}
|
|
|
+
|
|
|
+void GoodGay::visit()
|
|
|
+{
|
|
|
+ std::cout << "visit函数正在访问:" << building->m_SittingRoom << std::endl;
|
|
|
+
|
|
|
+ std::cout << "visit函数正在访问:" << building->m_BedRoom << std::endl;
|
|
|
+}
|
|
|
+
|
|
|
+void GoodGay::visit2()
|
|
|
+{
|
|
|
+ std::cout << "visit2函数正在访问:" << building->m_SittingRoom << std::endl;
|
|
|
+
|
|
|
+ //std::cout << "visit2函数正在访问:" << building->m_BedRoom << std::endl;
|
|
|
+}
|
|
|
+
|
|
|
+void test01()
|
|
|
+{
|
|
|
+ GoodGay gg;
|
|
|
+ gg.visit();
|
|
|
+ gg.visit2();
|
|
|
+}
|
|
|
+
|
|
|
+int main()
|
|
|
+{
|
|
|
+ test01();
|
|
|
+
|
|
|
+
|
|
|
+ system("pause");
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|