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