#include <iostream>
using namespace std;
/*---------------------------------
19.25-1.公有继承
变化 | 公有继承 | 保护继承 | 私有继承
基类的公有成员变成 | 派生类的公有成员 | 派生类的保护成员 | 派生类的私有成员
基类的保护成员变成 | 派生类的保护成员 | 派生类的保护成员 | 派生类的私有成员
基类的私有成员变成 | 只能通过基类的接口访问
---------------------------------*/
class A
{
public:
void set(int a,int b){x=a;y=b;}
void show(){ cout<<x<<endl<<y<<endl;}
protected:
int x;
private:
int y;
};
class B:public A
{
public:
//void set(int a,int b){x=a;y=b;} //编译报错,基类的私有成员y被公有派生后,是不可以直接访问的
//void show(){ cout<<x<<endl<<y<<endl;} //编译报错,基类的私有成员y被公有派生后,是不可以直接访问的
/*修改如下*/
void setb(int a){ x=a;}
void showb(){ cout<<x<<endl;}
};
int main()
{
B b;
b.set(1,2);//基类的公有成员函数set被公有派生后,可以直接访问
b.show(); //基类的公有成员函数set被公有派生后,可以直接访问
cout<<"-----------------"<<endl;
b.setb(3); //基类的公有成员变量x被公有派生后,可以直接访问
b.showb();
return 0;
}
运行结果:
1
2
-----------------
3
Press any key to continue