簡單地說下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;}