/*Copyright (c) 2011, 煙臺大學計算機學院
* All rights reserved.
* 作 者: 石堯
* 完成日期:2014 年04 月 08日
* 版 本 號:v1.0
*
* 問題描述:public繼承下的訪問權限和繼承方式。
* 樣例輸入:略.
* 樣例輸出:略。
* 問題分析:略。
*/
#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;
}
第十二週項目1-public繼承下的訪問權限和繼承方式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.