日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++从0到1的入门级教学(十一)——友元

發布時間:2023/12/9 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++从0到1的入门级教学(十一)——友元 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 11 友元
    • 11.1 全局函數做友元
    • 11.2 友元類
    • 11.3 成員函數做友元

11 友元

讓我們引入一個例子來講述友元是什么。

生活中你的家有客廳,有臥室,客廳所有來的客人都可以進去,但是你的臥室是私有的。對于認識的人來說你可以允許它進去,但是對于陌生人你就不是很歡迎了。

同樣地,我們把這個例子引申到類上,那么我們的友元就變成了,一個類允許另外一個類擁有訪問自己的私有權限。

如果要指定友元類,只需加上關鍵字friend。我們來看一下它的三種實現方式:

  • 全局函數做友元
  • 類做友元
  • 成員函數做友元

11.1 全局函數做友元

讓我們看一下全局函數做友元的簡單用法:

#include <iostream> using namespace std; #include <string>class Building {friend void goodGay(Building& building);//!儂,指定這個函數為Building的好朋友 public:Building(){m_SittingRoom = "客廳";m_Bedroom = "臥室";};string m_SittingRoom;private:string m_Bedroom; };//全局函數 void goodGay(Building &building) {cout << "友元全局函數正在訪問:" << building.m_SittingRoom << endl;cout << "友元全局函數正在訪問:" << building.m_Bedroom << endl; }void test01() {Building building;goodGay(building); }int main() {test01(); }

out:

11.2 友元類

讓我們在來看看友元類是怎么一回事,這個實際上不必多說,只要你試著敲一下下面的代碼,即可體會其思想。

#include <iostream> using namespace std; #include <string>class Building;class GoodGay { public:GoodGay();void visit();//參觀函數 訪問Building中的屬性Building* building; };class Building {friend class GoodGay; public:Building();string m_SittingRoom;private:string m_BedRoom; //臥室 };Building::Building() {m_SittingRoom = "客廳";m_BedRoom = "臥室"; }GoodGay::GoodGay() {//創建建筑物對象building = new Building; }void GoodGay::visit() {cout << "友元類正在訪問:" << building->m_SittingRoom << endl;cout << "友元類正在訪問:" << building->m_BedRoom << endl; }void test01() {GoodGay gg;gg.visit(); }int main() {test01(); }

out:

11.3 成員函數做友元

同樣地,成員函數做友元和類做友元也是大同小異,如下所示:

#include <iostream> using namespace std;class Building;class GoodGay { public:GoodGay();void visit1();//這個函數可以訪問Building的私有成員void visit2();//這個函數不可以訪問Building的私有成員Building* building; };class Building {friend void GoodGay::visit1(); public:Building();string m_SittingRoom;//客廳private:string m_BedRoom;//臥室 };//類外實現成員函數 Building::Building() {m_SittingRoom = "客廳";m_BedRoom = "臥室"; }GoodGay::GoodGay() {building = new Building; }void GoodGay::visit1() {cout << "visit1 函數正在訪問:" << building->m_BedRoom << endl;cout << "visit1 函數正在訪問:" << building->m_SittingRoom << endl; };void GoodGay::visit2() {// cout << "visit2 函數正在訪問:" << building->m_BedRoom << endl;cout << "visit2 函數正在訪問:" << building->m_SittingRoom << endl; };void test01() {GoodGay gg;gg.visit1();gg.visit2(); }int main() {test01(); }

out:

總結

以上是生活随笔為你收集整理的C++从0到1的入门级教学(十一)——友元的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。