区分“派生类对象”和“派生类”对基类成员的访问权限

1.“派生类对象”对基类成员的访问权限

对于共有继承,只有基类中的共有成员能被“派生类对象”访问,保护和私有成员不能被“派生类对象”访问。

对于私有和保护继承,基类中的所有成员不能被“派生类对象”访问

2. “派生类”对基类成员的访问权限

对于共有继承,基类中的共有和保护成员能被“派生类”访问,私有成员不能被“派生类”访问。

对于私有和保护继承,也是基类中的共有和保护成员能被“派生类”访问,私有成员不能被“派生类”访问。

通过下面代码说明派生类私有继承和共有继承:

#include <iostream>
using namespace std;
class Animal
{
public:
 Animal(){}
 void eat()
 {
  cout<<"eat."<<endl;
 }
};
class Giraffe:private Animal
{
public:
 Giraffe(){}
 void StrchNeck(double)
 {
  cout<<"strech neck"<<endl;
 }
 void take()
 {
  eat();   //派生类访问基类
 }
};
class Cat:public Animal
{
public:
 Cat(){}
 void Meaw()
 {
  cout<<"meaw"<<endl;
 }
};
void Func(Animal &an)
{
 an.eat();
}
void Func1(Giraffe &an)
{
 an.take(); //先访问本类成员函数,本类成员函数再访问基类成员函数
}
void main()
{
 Cat dao;
 Giraffe gir;
 Func(dao);//共有继承,Griaffe类对象能访问Animal类所有的共有成员
// Func(gir); //error Griaffe私有继承了Animal,Griaffe类对象不能直接访问Animal类所有的成员
 Func1(gir);
}

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值