C++ 继承和派生 及 学生管理范例
生活随笔
收集整理的這篇文章主要介紹了
C++ 继承和派生 及 学生管理范例
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、概念
繼承:在定義一個(gè)新的類B時(shí),如果該類與某個(gè)已知類A相似(指的是B擁有A的全部特點(diǎn)),那么就可以把A作為一個(gè)基類,而把B作為一個(gè)派生類(也稱子類)。
- 派生類是通過(guò)對(duì)基類進(jìn)行修改和擴(kuò)充得到的。在派生類中,可以擴(kuò)充新的成員變量和成員函數(shù)。
- 派生類一經(jīng)定義后,可以獨(dú)立使用,不依賴于基類。
- 派生類擁有基類的全部成員函數(shù)和成員變量,不論是private,protected 還是 public
- 在派生類的各個(gè)成員函數(shù)中,不能訪問(wèn)基類中的private成員。
2、需要繼承機(jī)制的例子 - 學(xué)生管理系統(tǒng)
所有的學(xué)生都有的共同屬性:
- 姓名
- 學(xué)號(hào)
- 性別
- 成績(jī)
所有的學(xué)生都有的共同方法(成員函數(shù))
- 是否該留級(jí)
- 是否該獎(jiǎng)勵(lì)
而不同的學(xué)生,又有各自不同的屬性和方法
- 研究生:有導(dǎo)師和系
- 大學(xué)生:有系
- 中學(xué)生:有競(jìng)賽特長(zhǎng)加分
3、派生類的寫法
class 派生類名 : public 基類名 {};?
4、派生類對(duì)象的內(nèi)存空間
派生類對(duì)象的體積,等于基類對(duì)象的體積,再加上派生類對(duì)象自己的成員變量的體積。
在派生類對(duì)象中,包含著基類對(duì)象,而且基類對(duì)象的存儲(chǔ)位置位于派生類對(duì)象新增的成員
變量之前。如下代碼示:
#include <iostream> #include <string.h>using namespace std;class CBase {int v1, v2; };class CDerived : public CBase {int v3; };int main() {printf("sizeof(CDerived) = %d\n", sizeof(CDerived));return 0; }輸出的結(jié)果是:12
?
5、繼承實(shí)例程序:學(xué)籍管理
#include <iostream> #include <string.h>using namespace std;class CStudent {private:string name;string id; // student numberchar gender; // 'F' for female, 'M' for maleint age;public:void PrintInfo() {cout << "name: " << name << endl;cout << "id: " << id << endl;cout << "gender: " << gender << endl;cout << "age: " << age << endl;}void SetInfo(const string & name_, const string & id_,int age_, char gender_) {name = name_;id = id_;age = age_;gender = gender_;}string GetName() { return name; } };class CUndergraduateStudnet : public CStudent { private:string department; // 學(xué)生所屬的系public:void QualifiedForBaoyan() {cout << "qualified for baoyan" << endl;}void PrintInfo() {CStudent::PrintInfo(); // 調(diào)用基類的PrintInfocout << "Department:" << department << endl;}void SetInfo(const string &name_, const string &id_,int age_, char gender_, const string & department_) {CStudent::SetInfo(name_, id_, age_, gender_); // 調(diào)用基類的SetInfodepartment = department_;} };int main() {CUndergraduateStudnet s2;s2.SetInfo("Harry Potter", "115200", 20, 'M', "CS");cout<< s2.GetName() << endl;s2.QualifiedForBaoyan();s2.PrintInfo();return 0; }執(zhí)行結(jié)果如下:
轉(zhuǎn)載于:https://www.cnblogs.com/aqing1987/p/4351932.html
總結(jié)
以上是生活随笔為你收集整理的C++ 继承和派生 及 学生管理范例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 网页中如何启用QQ交谈
- 下一篇: 等价类划分方法的应用