区分“派生类对象”和“派生类”对基类成员的访问权限
2014-08-13 17:25
267 查看
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. “派生类”对基类成员的访问权限
对于共有继承,基类中的共有和保护成员能被“派生类”访问,私有成员不能被“派生类”访问。
对于私有和保护继承,也是基类中的共有和保护成员能被“派生类”访问,私有成员不能被“派生类”访问。
通过下面代码说明派生类私有继承和共有继承:
#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);
}
相关文章推荐
- 派生类对基类成员的访问权限和派生类对象对基类成员的访问权限
- part4.(two)派生类成员函数和其它函数访问基类成员时的权限(访问控制表)
- C++基类成员函数访问派生类对象的基类成员问题
- C++ 中基类及派生类中继承成员访问权限
- c++类继承中的using声明,派生类中用using声明改变基类成员的访问权限[zz]
- 从“派生类不能访问基类对象的protected成员”开始讨论各类成员的“可见性”
- C++派生类对象访问基类的protected成员
- 派生类访问基类成员权限
- 【提问整理】protected继承,派生类对象如何访问基类成员?
- C++派生类对象访问基类的protected成员
- 派生类与派生类对象对基类成员的访问
- [转]c++类继承中的using声明,派生类中用using声明改变基类成员的访问权限
- 派生类环境中基类对象不能访问自己的保护成员
- 派生类的对象只能访问基类的public成员
- [导入]派生类对基类成员的访问权限
- 用基类指针创建的派生类对象,无法访问派生类对象的数据和成员
- C++派生类对象访问基类的protected成员
- c++类继承中的using声明,派生类中用using声明改变基类成员的访问权限
- 理解基类中成员的访问限定符和派生类的继承方式
- 第十二周任务一理解基类中成员的访问限定符和派生类的继承方式