<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                [TOC] ## 概述 友元函數必須在類里面申明,而且友元函數一定不是該類的成員函數。因此,這樣的“特權”實際上已經不是完全的面向對象設計了 ## 全局函數作友元 <details> <summary>main.cpp</summary> ``` #include <iostream> using namespace std; class A { protected: int age; public: void showAge() { cout << this->age << endl; }; // 聲明友元函數 friend void fri(A &a,int age); }; // 定義友元函數 void fri(A &a,int age) { a.age=age; } int main() { A a; fri(a,123); a.showAge(); // 123 return 0; } ``` </details> <br/> ## 其它類的成員函數作友元 別的類的成員函數作友元,也就是說這2個類相互調用,這樣無論誰定義在前在后,編譯時都有沖突。要解決這個問題,只要將類的申明、定義、實裝分開就可以了。 <details> <summary>main.cpp</summary> ``` #include <iostream> #include <string> using namespace std; class ca; //事先申明ca類,確保cb類的定義不出錯 class cb { //在ca類之前定義cb類,確保在ca類里申明cb的test()作友元時不出錯 public: void test(ca& a); //由于ca類事先申明,這兒不出錯 }; class ca { string id; void setId(string s) { id = s; } protected: string name; void setName(string s) { name = s; } public: void print() { cout << id << " " << name << " " << endl; } friend void cb::test(ca& a); //申明cb類的test()函數作友元,允許它訪問私有保護成員 }; void cb::test(ca& a) { //作友元的成員函數的實裝必須在ca類的后面,否則ca類的成員就未定義了。 a.id = "123"; //這是ca類的私有成員 a.setName("abc"); //這是ca類的保護成員 } int main ( ) { ca a; cb b; b.test(a); a.print(); return 0; } ``` </details> <br/>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看