• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            woaidongmao

            文章均收錄自他人博客,但不喜標題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            基類、派生類與友元

            1. 某基類為另一類的友元,該基類的派生類是否為其友元

            答:否

            class Base
            {};

            class Derived : public Base
            {};

            class SomeClass
            {
                 int _i;
            public:
                 friend class Base;    //
            是否Derived也是類SomeClass的友元

            }


            ---------------------------------------------------------------

            不可以:例子見下

            #include <iostream>

            using namespace std;

            class Base;

            class SomeClass
            {
                 int _i;
            public:
            void prnt() { cout << "_i = " << _i << endl;}
            SomeClass() : _i(0) {}
                 friend class Base;    //
            是否Derived也是類SomeClass的友元:

            };

            class Base
            {
            public:
            SomeClass one;
            void foo()
            {
            one._i = 123;
            }
            };
            //*
            class Derived : public Base
            {
            public:
            SomeClass two;
            void foo()
            {
            SomeClass two;
            two._i =789;   //
            編譯在此出錯

            }
            };
            //*/

            void main()
            {
            Base b;
            b.one.prnt();
            b.foo();
            b.one.prnt();
            /*
            Derive d;
            d.two.prnt();
            d.foo();
            some.prnt();
            //*/
            }


            這樣做顯然是為了安全,避免被惡意突破對對象的封裝,以便一切盡在控制之中

            --------------------------------------------------------------- ---------------------------

            2.基類的友元對從該基類派生的類型沒有特殊訪問權(quán)限。

            如果基類和派生類都需要訪問另一個類,那個類必須特地將訪問權(quán)限授予基類和每一個派生類

            #include<iostream>
            using namespace std;

            class Base{
            friend class Frnd;
            //friend class D2;
            protected:
            int i;
            };

            class D1:public Base{
            protected:
            int j;
            };

            class Frnd{
            public:
            int mem(Base b){return b.i;}
            //int mem(D1 d){return d.i;}//
            錯誤,基類友元對其派生類無作用

            };

            class D2: public Frnd{
            public:
            int mem(Base b){return b.i;}//
            錯誤,友元的派生類也不可以....,想訪問,必須定義friend

            };


            void main()
            {

            }

            3.派生類的友元可以訪問基類

            #include<iostream>
            using namespace std;

            class Base{
            public:

            protected:
            int i;

            };

            class D1:public Base{
            private:
            int j;
            friend class Frnd;
            };

            class Frnd{
            public:
            //int mem(Base& b){return b.i;}//
            錯誤,這是Base的引用,Frnd D1的友元但不是Base
            int mem(D1 &d){return d.i;}//
            正確,D1的引用,友元定義于D1,就像其成員函數(shù)一樣可訪問基類
            };

            void main()
            {


            }

             

             

            posted on 2009-10-27 11:20 肥仔 閱讀(876) 評論(0)  編輯 收藏 引用 所屬分類: C++ 基礎

            日本精品久久久久影院日本| 久久99国产乱子伦精品免费| 久久免费99精品国产自在现线| 久久精品无码一区二区三区免费| 久久强奷乱码老熟女网站| 国产精品久久久香蕉| 欧美777精品久久久久网| 一本大道久久东京热无码AV| 久久99精品久久久久婷婷| 久久精品综合一区二区三区| 久久99精品国产麻豆| 国产精品美女久久福利网站| 亚洲狠狠综合久久| 久久久久人妻一区精品色| 一本色道久久综合狠狠躁篇| 久久久久久综合一区中文字幕| 亚洲精品WWW久久久久久| 国产成人精品久久亚洲| 97久久综合精品久久久综合| 中文国产成人精品久久亚洲精品AⅤ无码精品| 久久亚洲国产成人精品性色| 欧美国产精品久久高清| 国产精品久久久久影院嫩草| 亚洲午夜久久久久久噜噜噜| 久久综合给合综合久久| 久久精品国产一区二区| 精品久久综合1区2区3区激情| 亚洲欧美日韩久久精品第一区| 久久大香萑太香蕉av| 天天综合久久一二三区| 久久久久一本毛久久久| 久久国产视屏| 久久人人爽人人澡人人高潮AV| 久久精品国产清高在天天线| 狠狠色婷婷久久综合频道日韩 | 久久精品人人槡人妻人人玩AV| 久久强奷乱码老熟女网站| 久久中文字幕人妻熟av女| 国产激情久久久久久熟女老人| 中文字幕人妻色偷偷久久 | 日日狠狠久久偷偷色综合免费|