C++入门经典-例8.1-类的继承
1:繼承是面向對象的主要特征(此外還有封裝和多態)之一,它使得一個類可以從現有類中派生,而不必重新定義一個新類。繼承的實質就是用已有的數據類型創建新的數據類型,并保留已有數據類型的特點,以舊類為基礎創建新類,新類包含了舊類的數據成員和成員函數,并且可以在新類中添加新的數據成員和成員函數。舊類被稱為基類或父類,新類被稱為派生類或子類。
2:類的繼承形式如下:
class 派生類名稱標識符:[繼承方式] 基類名稱標識符
{
? ? [訪問控制修飾符:]
? ? [ 成員聲明列表]
}
? ? 繼承方式有3中派生類型,分別為共有型(public)、保護型(protected)和私有型(privated),訪問控制修飾符也是public、protected、private三種類型,成員聲明列表中包含類的成員變量及成員函數,是派生類新增的成員。“:”是一個運算符,表示基類和派生類之間的繼承關系。
3:一個小例子。定義一個員工類,它包含員工ID、員工姓名、所屬部門等信息。
class CEmployee//定義員工類
{
public:
? ? int m_ID;//定義員工ID
? ? char m_Name[128];//定義員工姓名
? ? char m_Depart[128];//定義所屬部門
}
? ? 定義一個操作員類,通常操作員屬于公司的員工,它包含員工ID、員工姓名、所屬部門等信息,此外還包含密碼信息、登錄方法等。
class COperator :public CEmployee//定義一個操作員類,從CEmployee類派生而來
{
public:
? ? char m_Password[128];//定義密碼
? ? bool Login(); ?
}
? ? 操作員類是從員工類派生的一個新類,新類中增加密碼信息、登錄方法等,員工ID、員工姓名等信息直接從員工類中繼承得到。
3:例子代碼如下:
// 8.1.cpp : 定義控制臺應用程序的入口點。 // #include "stdafx.h" #include <iostream> using namespace std; class CEmployee //定義員工類 { public:int m_ID; //定義員工IDchar m_Name[128]; //定義員工姓名char m_Depart[128]; //定義所屬部門CEmployee() //定義默認構造函數 {memset(m_Name,0,128); //初始化m_Name//注意這種用法,可以隨意設置名字和部門memset(m_Depart,0,128); //初始化m_Depart }void OutputName() //定義共有成員函數 {cout <<"員工姓名"<<m_Name<<endl; //輸出員工姓名 } }; class COperator :public CEmployee //定義一個操作員類,從CEmployee類派生而來 { public:char m_Password[128]; //定義密碼bool Login() //定義登錄成員函數 {if (strcmp(m_Name,"MR")==0 && //比較用戶名。比較兩個字符串,設這兩個字符串為str1,str2,若str1==str2,則返回零;若str1>str2,則返回正數;若str1<str2,則返回負數。strcmp(m_Password,"KJ")==0) //比較密碼 {cout<<"登錄成功!"<<endl; //輸出信息return true; //設置返回值 }else{cout<<"登錄失敗!"<<endl; //輸出信息return false; //設置返回值 }} }; int main(int argc, char* argv[]) {COperator optr; //定義一個COperator類對象strcpy(optr.m_Name,"MR"); //訪問基類的m_Name成員strcpy(optr.m_Password,"KJ"); //訪問m_Password成員optr.Login(); //調用COperator類的Login成員函數optr.OutputName(); //調用基類CEmployee的OutputName成員函數return 0; } View Code運行結果:
? ? ?程序中,CEmployee類是COperator類的基類,也就是父類。COperator類將繼承CEmployee的所有非私有成員(private類成員不能被繼承)。
? ? 用戶在父類中派生子類時,可能存在一種情況,即在子類中定義了一個與父類同名的成員函數,此時稱為子類隱藏了父類的成員函數。
轉載于:https://www.cnblogs.com/lovemi93/p/7565163.html
總結
以上是生活随笔為你收集整理的C++入门经典-例8.1-类的继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Golang package
- 下一篇: C++ 获取函数耗时