關於C++繼承的一些遺忘細節

來源:互聯網
上載者:User

      這兩天偶爾翻看一本C++的書籍時,看到一個繼承的知識點竟有點陌生的感覺。也許是之前恰好沒接觸過,也許是太久沒接觸罷了,現在究竟是忘記了。應該記下來,以作備忘,順便羅嗦一下繼承的概念,嗯嗯。

      那就是C++中的訪問聲明。

      眾所周知,C++有三種繼承方式,公有繼承,保護繼承,私人繼承。公有繼承,基類的公有和保護成員在衍生類別的性質不變。保護繼承,基類的公有和保護成員在衍生類別均變成保護成員。保護成員是專為繼承機制而設的,使其在衍生類別中可見,類外不可見。私人繼承,基類的所有成員在衍生類別均變成私人成員。

      問題在於,當我用某種繼承方式時,卻想把基類的某個成員變成另外一種訪問方式,怎樣去實現呢?於是,這就用到了訪問調節機制。

      class A

      {

          publice:

             int  get_data(int x,int y);

             int  data;

      }

      class B:private A

      {

          publice:

               A::get_data;

               int get_s(){return s;};

               int set_s(){s=x*y;};

          private:

               int s;

      };

      顯然,如果不在B的publice裡加入 A::get_data,那麼get_data在B裡將成為私人成員。而通過訪問聲明可以把它變成公有。

      需要注意的是:

      訪問聲明不可把聲明對象說明為任何類型,也不能帶參數和傳回型別說明等。

      基類私人成員不能用於訪問聲明。

      不可降低或提升基類成員的可訪問性,例如不能把基類的公有成員聲明為保護,不能把保護聲明為公有等。

      對重載函數名的訪問聲明將調整基類所有同名函數的訪問域,但基類有不同訪問域的函數則不能用於訪問聲明,衍生類別有與基類的同名函數也不能用於訪問聲明。

      看來已羅嗦了不少,啊!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.