/*
* Copyright (c)2013, 烟台大学计算机学院学生
* All rightsreserved.
* 文件名称: array.cpp
* 作 者: 李中意
* 完成日期:2014 年 5月12 日
* 版本号: v1.0
* 问题描述:在下面的程序中要求的位置写下注释,声明相应的语句在语法上是否正确,为什么。在第一个程序中给出了示例,其他位置请仿照完成。在上机时,可以编译程序加以验证,阅读错误给出的英文提示,并加以理解。
*/
#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: public Animal //长颈鹿类
{
public:
Giraffe() {}
void StrechNeck()
{
cout << "Strech neck \n";
}
private:
void take()
{
eat(); // 正确,公有继承下,基类的公有成员对派生类可见
// drink(); // 错误,公有继承方式下,基类的私有成员只能基类自己用。
play(); // 正确,公有继承下,基类的保护成员派生类可用
}
};
int main()
{
Giraffe gir; //定义派生类的对象
gir.eat(); // 正确,公有继承下,基类的公有成员对派生类对象可见
// gir.play(); // 错误,保护成员类外不能使用
// gir.drink(); // 错误,私有成员类外不能使用
// gir.take(); // 错误,私有部分类外不能使用
gir.StrechNeck(); // 正确
Animal ani;
ani.eat(); // 正确
// ani.play(); // 错误,保护成员类外不能使用
// ani.drink(); // 错误,私有成员类外不能使用
// ani.take(); //错误,派生类的成员对基类对象(不论访问属性)不可见
// ani.StrechNeck(); //错误,基类不能用派生类内的成员
return 0;
}