#include <iostream>
using namespace std;
class Animal
{
public:
Animal() {}
void eat()
{
cout << "eat\n";
}
protected:
void play()
{
cout << "play\n";
}
private:
void drink()
{
cout << "drink\n";
}
};
class Giraffe: protected Animal
{
public:
Giraffe() {}
void StrechNeck()
{
cout << "Strech neck \n";
}
void take()
{
eat(); // 正确,保护继承下,基类public成员对派生类成员可见____
//drink(); // 错误,保护继承下,派生类不可访问基类private成员___
play(); // 正确,保护继承下,基类protected成员对派生类成员可见____
}
};
int main()
{
Giraffe gir;
//gir.eat(); // 错误,保护继承下,Giraffe类对象不可访问基类函数____
//gir.play(); // 错误,保护继承下,Giraffe类对象不可访问基类函数____
//gir.drink(); // 错误,保护继承下,Giraffe类对象不可访问基类函数____
return 0;
}
感悟:保护继承下,基类public成员对派生类成员可见
保护继承下,派生类不可访问基类private成员
保护继承下,基类protected成员对派生类成员可见