不是很难的研究生信息类
任務描述
本關任務:采用私有繼承完成學生信息類和研究生信息類的設計。
相關知識
為了完成本關任務,你需要掌握私有繼承的使用。
私有繼承
私有繼承在保護繼承的基礎上更進一步,訪問性進一步降低,父類中的公有成員和保護成員的訪問性均降到了私有 private,不僅對外不可見,對這個類的子類也不可見了。
要私有繼承一個類,只需繼承時在類名前面加上 private 關鍵字即可。
例如:
/* 繼承關系:Base->D1->D2 */
class Base
{
public:
int A;
};
class D1 : private Base // 私有繼承 Base 類
{
public:
F1();
};
void D1::F1()
{
A = 10; // 父類的成員 A 可以看做 D1 類的私有成員,在 D1 類中訪問 A 是可行的
}
class D2 : public D1 // 公有繼承 D1
{
public:
F2();
};
void D2::F2()
{
A = 10; // 這里就不行了,因為 D1 類私有繼承了 Base 類,所以 Base 類的 A 成員對 D2 類就是不可見的。
}
同樣,如果想在某個類的外部或者它的子類中訪問它私有繼承的基類的成員,那也只能在這個類中增加 get、set 方法了。
例如:
/* Base類的定義同上 /
/ 繼承關系:Base->D1->D2 */
class D1 : private Base
{
public:
void SetA(int a); // 設置 Base 類中 A 的值
int GetA(); // 獲取 Base 類中 A 的值
};
void D1::SetA(int a)
{
A = a;
}
int D1::GetA()
{
return A;
}
class D2 : public D1 // 公有繼承 D1 類
{
public:
void F2();
}
void D2::F2()
{
SetA(10); // 調用 D1 類的 SetA 公有方法設置 Base 類 A 的值
}
編程要求
在右側編輯器中的Begin-End之間補充代碼,設計學生信息類( Student )和設計研究生信息類( Graduate ),Graduate 類公有繼承 Student 類,而 Student 類私有繼承 People 類,并實現他們的成員函數以及一個普通函數,具體要求如下:
Graduate 類
增加一個成員變量研究方向:int ResearchID,以及一個成員函數:void PrintResearchID(),函數用來輸出 ResearchID 的值,輸出格式為:研究方向:ResearchID。
Student 類
補充有成員函數:void PrintSID(),函數輸出成員變量 SID 的值,輸出格式為:學號:SID。
普通函數:Set(int sid,int rid,string name,Graduate *ptr)函數,它用前三個參數設置 ptr 所指對象的三個成員。
People 基類,它有一個公有成員變量姓名 Name,一個公有成員函數 PrintName(函數的功能是打印出 Name 的值),代碼如下:
/* 繼承關系:People->Student->Graduate */
class People
{
public:
string Name;
void PrintName();
};
void People::PrintName()
{
cout << Name << endl;
}
測試說明
平臺會對你編寫的代碼進行測試,比對你輸出的數值與實際正確數值,只有所有數據全部計算正確才能通過測試:
測試輸入:1 304 厲宏富
預期輸出:
學號:1
姓名:厲宏富
研究方向:304
下面展示一些 內聯代碼片。
總結
以上是生活随笔為你收集整理的不是很难的研究生信息类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速掌握学习方法
- 下一篇: java利用Freemarker模板生成