定义个基类:
定义一个派生类:
点击(此处)折叠或打开
- #include
- using namespace std;
- class Base
- {
- public:
- void display()
- {
- cout<<"huang"<
- }
- protected:
- int x;
- private:
- int y;
- };
公有继承:派生类的对象可以访问基类中的公有成员,派生类的成员函数可以访问基类的公有和保护成员,
基类的公有成员和保护成员作为派生类的成员时,保持其原有状态
保护继承:派生类的成员函数可以访问基类的公有成员和保护成员,以及基类的公有成员和保护成员作为派生类的保护成员,保护成员还可被派生类的子类访问
点击(此处)折叠或打开
- class A:public Base
- {
- public:
- void print()
- {
- cout<<"liglog"<
- 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;
-
- };
点击(此处)折叠或打开
- 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;
- }