• <td id="ae6ms"><li id="ae6ms"></li></td>
  • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
  • <table id="ae6ms"></table>
  • <td id="ae6ms"></td>
    <td id="ae6ms"></td>
  • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
  • <td id="ae6ms"></td>
  • <table id="ae6ms"><li id="ae6ms"></li></table>
  • <table id="ae6ms"></table>
    西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
    軟件
    軟件
    文章
    搜索

    首頁編程開發VC|VC++ → C++中的友元關系淺析

    C++中的友元關系淺析

    相關軟件相關文章發表評論 來源:本站整理時間:2010/9/4 22:28:20字體大?。?em class="fontsize">A-A+

    作者:佚名點擊:50次評論:0次標簽: C++ 友元

    • 類型:塔防游戲大?。?i>34.5M語言:中文 評分:10.0
    • 標簽:
    立即下載

    在封裝中C++類數據成員大多情況是private屬性;但是如果接口采用多參數實現肯定程序效率;然而這時候如果外界需要頻繁訪問這些私有成員,就不得不需要一個既安全又理想的“后門”——友元關系;

    C++中提供三種友元關系的實現方式,友元函數、有緣成員函數、友元類。

    友元函數:既將一個普通的函數在一個類中說明為一個friend屬性;其定義(大多數會訪問該類的成員)應在類后;

    友元成員函數:既然是成員函數,那么肯定這個函數屬于某個類,對了就是因為這個函數是另外一個類的成員函數,有時候因為我們想用一個類通過一個接口去訪問另外一個類的信息,然而這個信息只能是被它授權的類才能訪問;那么也需要用friend去實現;這個概念只是在聲明的時候少有變化;

    友元類:友元類聲明會將整個類說明成為另一個類的友元關系;和之前兩種的區別是集體和個人的區別;友元類的所有成員函數都可以是另一個類的友元函數;

    值得注意的是友元關系是單向的,有點像我們戀愛中出現的單相思 O(∩_∩)O,單向關系就是說如果A被說明稱B的友元關系,那么只能說A是B的友元,并不代表B是A的友元;其次在多數情況下友元關系的函數都會訪問它被說明中類的成員,這時候應該將函數定義在類的后面;

    下面給一個簡單的例程代碼;

    1 #include <iostream>
    2
    3 using namespace std;
    4
    5 class B;
    6
    7 class A{
    8 private:
    9 int x;
    10 public:
    11 A();
    12 void display(B &);
    13 };
    14
    15 class C;
    16
    17 class B{
    18 private:
    19 int y;
    20 int z;
    21 public:
    22 B();
    23 B(int, int);
    24 friend void A::display(B &);//友元成員函數
    25 friend void display(B &);//友元函數
    26 friend class C;//友元類
    27 };
    28
    29 class C{
    30 private:
    31 int sum;
    32 void calc(B &);
    33 public:
    34 C();
    35 void display(B &);
    36 };
    37
    38 //必須在友元關系的類后進行定義
    39 void display(B &v)//友元成員函數
    40 {
    41 cout << v.y << " " << v.z << endl;
    42 }
    43
    44 A::A()
    45 {
    46 this->x = 0;
    47 }
    48
    49 void A::display(B &v)//友元成員函數
    50 {
    51 this->x = v.y + v.z;
    52 cout << this->x << endl;
    53 }
    54
    55 B::B()
    56 {
    57 this->y = 0;
    58 this->z = 0;
    59 }
    60
    61 B::B(int y, int z)
    62 {
    63 this->y = y;
    64 this->z = z;
    65 }
    66
    67 C::C()
    68 {
    69 sum = 0;
    70 }
    71
    72 void C::display(B &v)
    73 {
    74 this->calc(v);
    75 cout << sum << " = " << v.y << " + " << v.z << endl;
    76 }
    77
    78 void C::calc(B &v)
    79 {
    80 sum = v.y + v.z;
    81 }
    82
    83 int main()
    84 {
    85 A a;
    86 B b(2, 3);
    87 display(b);
    88 a.display(b);
    89 C c;
    90 c.display(b);
    91
    92 return 0;
    93 }
    94

      魔獸塔防地圖
      (300)魔獸塔防地圖
      塔防,即炮塔防御的簡稱,也稱。塔防受眾很廣,游戲模式簡單而可玩性強,是智力和策略的比拼。當塔防與這兩種游戲類型融合在一起的話,游戲就會變得更好玩,同時也很休閑。小編在這里為大家搜集整理了許多魔獸爭霸塔防地圖,歡迎感興趣的玩家們前來下載。...更多>>
      塔防游戲
      (70)塔防游戲
      西西游戲網提供最新最熱門的塔防游戲,塔防游戲顧名思義就是炮塔防守游戲,玩家需要建造炮塔轟炸一些進攻的敵人保衛家園,塔防游戲操作都很簡單,就是在最合理的位置放置炮塔,無需其他的操作,可能有的塔防游戲會添加一些技能,但是也沒什么難度的哦.熱門游戲保衛蘿卜獸人必須死炮塔防御塔防三國志等等,太多了。...更多>>

      相關評論

      閱讀本文后您有什么感想? 已有人給出評價!

      • 8 喜歡喜歡
      • 3 頂
      • 1 難過難過
      • 5 囧
      • 3 圍觀圍觀
      • 2 無聊無聊

      熱門評論

      最新評論

      發表評論 查看所有評論(0)

      昵稱:
      表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
      字數: 0/500 (您的評論需要經過審核才能顯示)
      女人让男人桶30分钟免费视频,女人张开腿让男人桶个爽,一进一出又大又粗爽视频
    • <td id="ae6ms"><li id="ae6ms"></li></td>
    • <xmp id="ae6ms"><td id="ae6ms"></td><table id="ae6ms"></table>
    • <table id="ae6ms"></table>
    • <td id="ae6ms"></td>
      <td id="ae6ms"></td>
    • <table id="ae6ms"></table><table id="ae6ms"><td id="ae6ms"></td></table>
    • <td id="ae6ms"></td>
    • <table id="ae6ms"><li id="ae6ms"></li></table>
    • <table id="ae6ms"></table>