#include <iostream>
using namespace std;
class B{
public:
void getx(int n)
{x=n;}
void disp()
{cout<<x<<endl;}
private:
int x;
};
class D:private B{
public:
void getxy(int n,int m)
{
getx(n);
y=m;
}
void dispd()
{
//cout<<x<<endl; //错误,派生类不能直接访问私有成员x。
disp();
cout<<y<<endl;
}
private:
int y;
};
int main()
{
D d;
//d.getx(11); //D私有继承B。getx()在派生类中卫私有成员,派生类对象不能直接访问
//d.disp(); //同上。
d.getxy(12,15);
d.dispd();
return 0;
}
//=========================================================
#include <iostream>
using namespace std;
class B{
public:
void getx(int n)
{x=n;}
void disp()
{cout<<x<<endl;}
protected:
int x;
};
class D:private B{
public:
void getxy(int n,int m)
{
x=n; //x为B的保护成员,为D的私有成员。可以直接访问
y=m;
}
void dispd()
{
cout<<x<<endl; //x为B的保护成员,为D的私有成员。可以直接访问
cout<<y<<endl;
}
private:
int y;
};
class C:private D{
public:
void get(int n,int m,int s)
{
//x=n; // 错误的,B被D私有继承后,B中的所有成员为D中的私有成员,即x为D中的私有成员,在C中不能直接访问。
//y=m; //错误的,y为D中的私有成员,不能直接被访问
getxy(n,m);
z=s;
}
void dispc()
{
//cout<<x<<endl; //错误的,B被D私有继承后,B中的所有成员为D中的私有成员,即x为D中的私有成员,在C中不能直接访问。
//cout<<y<<endl; //错误的,y为D中的私有成员,不能直接被访问
dispd();
cout<<z<<endl;
}
private:
int z;
};
int main()
{
B b;
b.getx(10);
b.disp();
D d;
d.getxy(11,22);
d.dispd();
C c;
c.get(33,44,55);
c.dispc();
return 0;
}