代码实践
-
Building.h
#pragma once #include <iostream> using namespace std; class Building { friend class Goodgay; //这个类做了友元,那么这个类的所有member function都是friend friend void visit_building(Building* b); public: Building(string ke = "客厅", string wo = "卧室") :_keting(ke), _woshi(wo) {} string _keting; private: string _woshi; };
-
main.cpp
#include <iostream> #include "Building.h" #include "Goodgay.h" #include <string> using namespace std; void visit_building(Building* b) { ; cout << "好朋友正在参观你的: " << b->_keting << endl; cout << "好朋友正在参观你的: " << b->_woshi << endl; //在没有建立友元时,全局函数无法访问私有成员 } void demo_1() { Building B; //这里没有括号! visit_building(&B); } void demo_2() { Goodgay gg; gg.visit(); } int main() { //全局函数做友元 //demo_1(); //友元类 demo_2(); system("pause"); return 0; }
-
Goodgay.h
#pragma once #include "Building.h" class Goodgay { public: Goodgay(); void visit(); private: Building* _Building; };
-
Goodgay.cpp
#include "Goodgay.h" Goodgay::Goodgay() { this->_Building = new Building; } void Goodgay::visit() { cout << "Good gay正在访问你的:" << this->_Building->_keting << endl; cout << "Good gay正在访问你的:" << this->_Building->_woshi << endl; //没有把goodgay类作为building类的友元就无法访问卧室 }
今天是20200325 记得是同类无私处,异类有友元^ _ ^