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;
}
