淺談C++繼承方式__C++

來源:互聯網
上載者:User
簡單地說下C++類的3種繼承方式,分別是public繼承,protected繼承,private繼承。

最常用的還是public繼承。class預設的是private繼承,它的member如果沒寫入權限也是預設

private。struct則相反,預設的是public繼承。結合下面的圖示和代碼,對C++的繼承就有了

比較清晰的認識了。

繼承之後,derived class 繼承過後的member的屬性就是圖中所示。

代碼主要從:

1.基類成員對其對象的可見度:  

2. 基類成員對衍生類別的可見度:  

3. 基類成員對衍生類別對象的可見度:

這3個方面談的。

#include <iostream>class base{public:base(){a = 0;b = 1;c = 2;}int a;protected:int b;private:int c;};class derived1 : public base{//public繼承public:void fun(){//derived class可以訪問public和protected memberstd::cout<<base::a<<base::b<<std::endl;//std::cout<<base::c;//不能訪問}};class derived2 : protected base{//protected繼承public:void fun(){//derived class可以訪問public和protected memberstd::cout<<base::a<<base::b<<std::endl; // std::cout<<base::c;//不能訪問}};class derived3 : private base{//private繼承public:void fun(){//derived class可以訪問public和protected memberstd::cout<<base::a<<base::b<<std::endl; // std::cout<<base::c;//不能訪問}};class derived4 : public derived3{//base的member不能被private繼承的衍生類別的子類訪問public:void fun(){//std::cout<<a;}};class derived5 : base{//預設private繼承void fun(){//derived class可以訪問public和protected memberstd::cout<<base::a<<base::b;// std::cout<<base::c;//不能訪問}};int main(void){base b1;derived1 d1;derived2 d2;derived3 d3;d1.fun();d2.fun();d3.fun();std::cout<<b1.a;//base class Object只能訪問public memberstd::cout<<d1.a;//public繼承時 derived class Object只能訪問base class的public member//std::cout<<d1.b<<d1.c;//不能訪問//std::cout<<d2.a<<d2.b;//protected繼承時 derived class Object不能問訪base class的member//std::cout<<d3.a;//private繼承時 derived class Object不能問訪base class的memberreturn 0;}


 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.