C++----類成員函式做友元函式
阿新 • • 發佈:2018-12-14
//成員函式做友元函式: //只讓visit1做building的好朋友(只有visit1能訪問building的私有屬性) class Building; class goodGay { public: goodGay(); void visit1(); void visit2(); private: Building * building; }; //類內宣告,類外實現; class Building { //讓成員函式visit1做友元函式: friend void goodGay::visit1(); public: Building(); public: string m_sittingroom; //客廳 private: string m_bedroom; //臥室 }; Building::Building() { this->m_bedroom = "臥室"; this->m_sittingroom = "客廳"; } goodGay::goodGay() { building = new Building; } void goodGay::visit1() { cout << "基友正在" << this->building->m_sittingroom << endl; //要訪問私有屬性的元素; //在Building 類中定義友元類:friend class goodGay; cout << "基友正在" << this->building->m_bedroom << endl; } void goodGay::visit2() { cout << "基友正在" << this->building->m_sittingroom << endl; //要訪問私有屬性的元素; //在Building 類中定義友元類:friend class goodGay; //cout << "基友正在" << this->building->m_bedroom << endl; } void test01() { goodGay g1; g1.visit1(); } int main() { test01(); return 0; }
1.首先定義class goodGay,其中宣告visit1函式,但是不能定義它。在visit1使用class Building的成員之前必須先宣告class Building;
2.接下來定義class Building , 包括對於visit1的友元宣告;
3.最後定義visit1,此時他才可以使用class Building的成員。
//參考資料:C++ primer 5th