1.c++中繼承有公有繼承,保護繼承,私有繼承
定義個基類:
#include using namespace std; class Base { public: void display() { cout<<"111212"<<endl; } protected: int x; private: int y; };
定義一個派生類:
公有繼承:派生類的對象可以訪問基類中的公有成員,派生類的成員函數可以訪問基類的公有和保護成員,
基類的公有成員和保護成員作為派生類的成員時,保持其原有狀態
class A:public Base { public: void print() { cout<<"liglog"<<endl; display(); //派生類內部可以訪問基類的公有成員 x=0; //派生類內部中可以訪問基類的保護成員 cout<< //y=1; //派生類內部都不可訪問基類的私有成員 //cout<< } protected: int Ax; private: int Ay; };
保護繼承:派生類的成員函數可以訪問基類的公有成員和保護成員,以及基類的公有成員和保護成員作為派生類的保護成員,保護成員還可被派生類的子類訪問
class B:protected Base { public: void print() { cout<<"shi"<<endl; display();//派生類內部可訪問基類的公有成員 x=1;//派生類內部可訪問基類的保護成員 cout<<x<<endl; // y=1;//派生類內部不可訪問基類的私有成員 // cout<<y<<endl; } protected: int Bx; private: int By; };
私有繼承:基類的公有成員和保護成員作為派生類的私有成員,不能被派生類的子類訪問,即不能被往下繼承。
class C:private Base { public: void print() { cout<<"wo"<<endl; display();//派生類內部可訪問基類的公有成員 x=1; //派生類內部可訪問基類的保護成員 cout<<x<<endl; // y=1; //派生類內部不可訪問基類的私有成員 // cout<<y<<endl; } protected: int Cx; private: int Cy; };
main函數:
int main() { // 公有繼承部分 A aObject; aObject.display();//派生類外部可以訪問基類的公有成員 aObject.print(); // aObject.x=1;//派生類外部不可訪問基類的保護成員 // aObject.y=3;//派生類外部不可訪問基類的私有成員 //保護繼承部分 B bObject; // bObject.display();//派生類外部不可訪問基類的公有成員 bObject.print(); // bObject.x=1;//派生類外部不可訪問基類的保護成員 // bObject.y=1;//派生類外部不可訪問基類的私有成員 //私有繼承部分 C cObject; // cObject.display();//派生類外部不可訪問基類的公有成員 cObject.print(); // cObject.x=1;//派生類外部不可訪問基類的保護成員 // cObject.y=1;//派生類外部不可訪問基類的私有成員 return 0; }