中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++訪問屬性和繼承屬性淺析

發布時間:2020-05-05 10:10:57 來源:網絡 閱讀:2656 作者:捕風的xiao_k 欄目:編程語言

    對于初學者C++的屬性控制以及繼承屬性還是比較那掌握的,筆者在這里總結一下自己學習這些過程的見解。首先我們來看:


    1、C++支持的訪問屬性有public、protected、private,下來我淺談一下我在學習過程中的一些領悟。

            1、對于public

                    1、該類中的函數、子類中的函數、其友元函數的訪問以及該類中的對象

                    2、我個人一直覺得用代碼理解概念是一個很好的方法,下邊我將給出一些我的測試用例:

class Base
{
public:
    //友元函數
    friend void friend_Show(Base &bb);
public:
    Base():x(0),px(0){ }
    ~Base(){ }
public:
    //公有屬性
    int px;
    void ShowBase()
    {
        cout<<"I am Show Base and am public"<<endl;
    }
    void Test()
    {
        cout<<"I am Test"<<endl;
        //測試保護方法調用公有方法成功了嗎
        Print();
        //測試公有屬性可以被保護方法修改嗎
        cout<<"px = "<<px<<endl;
        //測試私有方法調用公有方法
         Print_Private();
        //測試私有方法修改公有屬性
         cout<<"px = "<<px<<endl;
        
    }
protected:
    void Print()
    {
        cout<<"I am Print "<<endl;
        //公有方法被保護成員訪問
         ShowBase();
         //保護方法修改公有屬性
         px = 10; 
    }
private:
    void Print_Private()
    {
        cout<<"I am Pint_Private"<<endl;
        //公有成員被私有成員訪問
        ShowBase();
         //私有方法修改公有屬性
         px = 20;
    }
private:
    int x;

};
void friend_Show(Base &bb)
{
    cout<<"I am friend_Show"<<endl;
    //友元方法訪問公有屬性
    bb.px= 30;
    ////友元方法訪問公有方法
    bb.ShowBase();

}
void main()
{
    Base bb;
    bb.Test();
    //測試友元方法方法公有屬性和方法
     friend_Show(bb);
     cout<<"bb.px = "<<bb.px<<endl;

}

運行結果:

C++訪問屬性和繼承屬性淺析

        上邊的測試代碼我給出了盡可能多注釋,驗證了上邊幾個屬性,除了子類中的函數的訪問屬性沒有給出測試用例,其他的都給出了測試用例。子類中的函數的訪問屬性我下邊將作為一個專門的模塊總結。


         2、對于ptotected

               1、可以被類中的函數、子類中的函數、其友元函數、該類的對象訪問

               2、這里我同樣給出測試代碼:

class Base
{
public:
    //友元函數
    friend void friend_Show(Base &bb);
public:
    Base():x(0),pp(0)  {   }
    ~Base()    {    }
public:
    void ShowBase()
    {
        cout<<"I am Show Base and am public"<<endl;
        //調用保護屬性
        Print();
        //修改保護屬性
        pp = 40;
    }

    void Test()
    {
        cout<<"I am Test"<<endl;
        //測試保護方法調用保護方法
        Test_proteced();
        //測試公保護方法修改保護屬性
        cout<<"pp = "<<pp<<endl;
        //測試私有方法調用保護方法
         Print_Private();
        //測試私有方法修改保護屬性
         cout<<"pp = "<<pp<<endl;
         //測試公有方法調用保護方法
          ShowBase();
        //測試公有方法修改保護屬性
          cout<<"pp = "<<pp<<endl;
        
    }

    void TestFriend()
    {
        cout<<"I am TestFriend"<<endl;
         cout<<"pp = "<<pp<<endl;
    }
protected:
    int pp;
    void Print()
    {
        cout<<"I am Print and am protected "<<endl;
    }

    void Test_proteced()
    {
        cout<<"I am Test_proteced "<<endl;
        //測試保護方法調用
        Print();
        pp = 50;
    }
private:
    void Print_Private()
    {
        cout<<"I am Pint_Private"<<endl;
        //公有成員被私有成員訪問
        Print();
        //私有方法修改保護屬性
        pp = 60;
    }
private:
    int x;

};



void friend_Show(Base &bb)
{
    cout<<"I am friend_Show"<<endl;
    //友元方法訪問保護屬性
    bb.pp= 30;
    ////友元方法訪問保護方法
    bb.Print();
    

}

void main()
{
    Base bb;
    bb.Test();
    //測試友元方法方法公有屬性和方法
     friend_Show(bb);
     bb.TestFriend();

}

運行結果:

        C++訪問屬性和繼承屬性淺析


        同樣我在代碼中給出了盡可能詳盡的注釋,對除了子函數中的訪問沒有給出,子函數的訪問權限后邊我將作為一個專門的模塊總結。


                3、對于private修飾符

                    1、只能有該類中的函數以及其友元函數訪問,不能被任何其他函數和對象訪問。

                    2、同樣我也給出測試代碼:

class Base
{
public:
    //友元函數
    friend void friend_Show(Base &bb);
public:
    Base():x(0)  {  }
    ~Base()   {    }
public:
    void ShowBase()
    {
        cout<<"I am Show Base and am public"<<endl;
        //調用私有屬性
        Print_Private();
        //修改私有屬性
        x = 200;
    }

    void Test()
    {
        cout<<"I am Test"<<endl;
        //測試公有方法調用保護方法
        ShowBase();
        //測試公有方法修改私有屬性
        cout<<"x = "<<x<<endl;
        //測試保護方法調用私有方法
         Print();
        //測試保護方法修改私有屬性
         cout<<"x = "<<x<<endl;
         //測試私有方法調用私有方法
         Test_Private();
         //測試是由私有方法修改私有屬性
         cout<<"x = "<<x<<endl;    
    }
    void TestFriend()
    {
        cout<<"I am TestFriend"<<endl;
         cout<<"x = "<<x<<endl;
    }
protected:
    void Print()
    {
        cout<<"I am Print and am protected "<<endl;
        //測試訪問私有屬性的方法
        Print_Private();
        //測試調用屬性的屬性
        x = 100;
    }
private:
    void Print_Private()
    {
        cout<<"I am Pint_Private"<<endl;
    }

    void  Test_Private()
    {
        cout<<"I am Test_priavate"<<endl;
        Print_Private();
    }
private:
    int x;

};

void friend_Show(Base &bb)
{
    cout<<"I am friend_Show"<<endl;
    //友元方法訪問私有屬性
    bb.x= 300;
    ////友元方法訪問私有方法
    bb.Print_Private();
    

}

void main()
{
    Base bb;
    bb.Test();
    //測試友元方法方法公有屬性和方法
     friend_Show(bb);
     bb.TestFriend();

}

運行結果:

C++訪問屬性和繼承屬性淺析

        最后也同樣給出了privete訪問控制測試代碼以及截圖,驗證了我上邊給出的訪問控制權限。


    限于篇幅這里只給出了基本的訪問控制權限,沒有給出子類中的訪問控制權限測試案例,以及規律,子類中訪問控制權限我將在下一篇的博文中給出。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐源县| 百色市| 清涧县| 湖口县| 安岳县| 辉县市| 陇西县| 石柱| 兴安县| 高密市| 海丰县| 清新县| 望江县| 英吉沙县| 江门市| 前郭尔| 阿坝县| 四平市| 新野县| 永川市| 丹凤县| 永丰县| 集安市| 太仓市| 桦南县| 越西县| 湛江市| 二手房| 视频| 左贡县| 福贡县| 同心县| 乌兰察布市| 五指山市| 大厂| 永春县| 肇庆市| 勃利县| 赫章县| 绥宁县| 灵武市|