3、成员函数做友元.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. //4.4.3 成员函数做友元
  2. #include <iostream>
  3. class Building;
  4. class GoodGay
  5. {
  6. public:
  7. GoodGay();
  8. void visit(); //让visit函数可以访问Building中私有成员
  9. void visit2(); //让visit2函数不可以访问Building中私有成员
  10. Building* building;
  11. };
  12. class Building
  13. {
  14. //告诉编译器 GoodGay类下的visit成员函数作为本类的好朋友,可以访问私有成员
  15. friend void GoodGay::visit();
  16. public:
  17. Building();
  18. public:
  19. std::string m_SittingRoom; //客厅
  20. private:
  21. std::string m_BedRoom; //卧室
  22. };
  23. //类外实现成员函数
  24. Building::Building()
  25. {
  26. this->m_BedRoom = "卧室";
  27. this->m_SittingRoom = "客厅";
  28. }
  29. GoodGay::GoodGay()
  30. {
  31. building = new Building;
  32. }
  33. void GoodGay::visit()
  34. {
  35. std::cout << "visit函数正在访问:" << building->m_SittingRoom << std::endl;
  36. std::cout << "visit函数正在访问:" << building->m_BedRoom << std::endl;
  37. }
  38. void GoodGay::visit2()
  39. {
  40. std::cout << "visit2函数正在访问:" << building->m_SittingRoom << std::endl;
  41. //std::cout << "visit2函数正在访问:" << building->m_BedRoom << std::endl;
  42. }
  43. void test01()
  44. {
  45. GoodGay gg;
  46. gg.visit();
  47. gg.visit2();
  48. }
  49. int main()
  50. {
  51. test01();
  52. system("pause");
  53. return 0;
  54. }