#include<iostream>
using namespace std;
class B{
public:
void getab(int a1,int b1)
{
a=a1;
b=b1;
}
void dispab()
{
cout<<"a="<<a<<endl;
cout<<"b="<<b<<endl;
}
private:
int a;
protected:
int b;
};
class C:public B{ //公有继承
public:
void getabc(int a1,int b1, int c1)
{
//a=a1; //是错的,a为B类私有成员,C的成员函数不能直接调用。
b=b1; //对的,b为B类的保护乘员,C类的成员函数可直接调用,
getab(a1,b1);
c=c1;
}
void dispabc()
{
//cout<<"a="<<a<<endl; //是错的,a为B类私有成员,C的成员函数不能直接调用
cout<<"b="<<b<<endl; //对的,b为B类的保护乘员,C类的成员函数可直接调用
cout<<"------------------------"<<endl;
dispab();
cout<<"c="<<c<<endl;
}
private:
int c;
};
int main()
{
C obj;
obj.getabc(11,22,33);
cout<<"调用的是父类的dispab()"<<endl;
obj.dispab(); //子类(派生类)对象可直接调用公有继承来的父类(基类)的成员函数
cout<<"===================="<<endl;
cout<<"调用的是派生类的dispabc()"<<endl;
obj.dispabc();
return 0;
}//基类的共有成员和保护成员被公有继承后,保持成员在基类中的原有类型,派生类可直接访问。基类的私有成员在派生类中不可直接访问,只能通过基类共有成员函数间接访问