• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • C++/CLI思辨錄之再談繼承

    發表于:2007-05-25來源:作者:點擊數: 標簽:思辨錄之C++CLI繼承
    在 面向對象 編程領域一個關鍵的概念是繼承。 在OO和C++中,類成員共有三種級別的繼承:public,protected和private。對于基類成員的存取操作應該依賴于下面兩個因素: 派生類聲明其類頭(public, protected 或 private)的方式 對類成員的存取指定標志(public,
     在面向對象編程領域一個關鍵的概念是繼承。

      在OO和C++中,類成員共有三種級別的繼承:public,protected和private。對于基類成員的存取操作應該依賴于下面兩個因素:

      ·派生類聲明其類頭(public, protected 或 private)的方式

      ·對類成員的存取指定標志(public, protected 或 private)

      如果你在基類中聲明成員為private,那么這些成員對于任何派生類都是不可存取的。

      如果你在基類中聲明成員為protected,而且新類是基類的私有派生,那么這些成員在派生類中變為私有的。

      如果你在基類中聲明成員為protected,而且新類是基類的protected 型派生,那么這些成員在派生類中變為protected 的。

      如果你在基類中聲明成員為protected,而且新類是基類的public 型派生,那么這些成員在派生類中變為protected的。

      如果你在基類中聲明成員為public,而且新類是基類的private 型派生,那么這些成員在派生類中變為private 的。

      如果你在基類中聲明成員為public,而且新類是基類的protected 型派生,那么這些成員在派生類中變為protected的。

      如果你在基類中聲明成員為public,而且新類是基類的public 型派生,那么這些成員在派生類中變為public 的。

      這是一些老式的C++規則。在.Net中,情況就大大不同了-.Net僅支持public繼承。但是當一個類被public繼承,則基類的保護成員將對新的派生類成為private的。

      考慮下面的三個C++類:

    clearcase/" target="_blank" >cccccc" width="90%" align="center" bgcolor="#e3e3e3" border="1">
    class A
    {
     protected: void fa()
     { printf("fa called"); }
    };
    class B : public A
    {
     public: void fb()
     { fa(); }
    };
    class C : public B
    {
     public: void fc()
     { fa(); }
    };
    int main()
    {
     C c;
     c.fc();
     return 0;
    }

      根據我前面介紹的規則,在C++中這些代碼是能成功運行的。但是如果你把它們改變為托管類,則在類c中是不能調用fa()的。

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>