最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c++中的繼承與派生使用詳解

 更新時(shí)間:2025年10月14日 08:59:59   作者:帥氣小胖子  
C++中的繼承與派生概念,解釋了繼承是類之間的成員變量和函數(shù)的獲取過程,派生即繼承的另一角度表述,介紹了基類和派生類的定義,并分析了在C++中繼承的三種方式:public、protected、private,以及它們對(duì)成員訪問權(quán)限的影響

1、繼承與派生是C++的核心概念

首先需明確,繼承和派生是class之間,以及基于class生成的實(shí)例之間的包含與被包含關(guān)系,至于為什么不認(rèn)為是數(shù)學(xué)中集合與子集來形容,因?yàn)楦拍钌线€是存在一些區(qū)別的。

2、什么是繼承與派生

繼承(Inheritance)可以理解為一個(gè)類從另一個(gè)類獲取成員變量和成員函數(shù)的過程。例如類 B 繼承于類 A,那么 B 就擁有 A 的成員變量和成員函數(shù)。 

在C++中,派生(Derive和繼承是一個(gè)概念,只是站的角度不同。繼承是兒子接收父親的產(chǎn)業(yè),派生是父親把產(chǎn)業(yè)傳承給兒子。 

被繼承的類稱為父類或基類,繼承的類稱為子類或派生類。“子類”和“父類”通常放在一起稱呼,“基類”和“派生類”通常放在一起稱呼。 

派生類除了擁有基類的成員,還可以定義自己的新成員,以增強(qiáng)類的功能。

3、c++中繼承與派生的作用

最常見的我們校園網(wǎng)管理系統(tǒng),首先大致可以分為以下幾種類型,學(xué)生,老師。學(xué)生再細(xì)分,可以分為???,本科,碩士,博士。

老師也可以分為,講師,副教授,教授,此外還有不教授學(xué)科,專門做管理和后勤方面的老師。

我們校園網(wǎng)系統(tǒng)中,需要錄入所有這些人的信息。此時(shí)如果我們?yōu)槊恳环N類型群體單獨(dú)建立一個(gè)class,其實(shí)也可以實(shí)現(xiàn),但是思考以下問題:

(1)所有人是否都需要一些基礎(chǔ)屬性,如年齡,姓名

(2)如果每一類人群,單獨(dú)寫一個(gè)對(duì)應(yīng)的class,是否每一個(gè)class中都要定義一個(gè)一次年齡和姓名成員變量。這樣就會(huì)照成代碼的臃腫。

對(duì)于以上問題,故我們提出了繼承的概念,現(xiàn)在我們定義一個(gè)名為people的class,里面定義了最為基礎(chǔ)的性質(zhì),后續(xù)學(xué)生類型的class,老師類型的class,都繼承這個(gè)基礎(chǔ)people,就可以使得代碼結(jié)構(gòu)優(yōu)化。

3.1 實(shí)際代碼中說明

接著上段來思考,此時(shí)我們需要定義學(xué)生的class,基于繼承people,此時(shí)我們還要為學(xué)生添加一些信息,如學(xué)生的成績,文科,理科,或工科生,學(xué)生年級(jí),屬于那個(gè)學(xué)院。

閑話少說,先看代碼:

class People{
public:
    void setname(char *name);
    void setage(int age);
    char *getname();
    int getage();
private:
    char *m_name;
    int m_age;
};
void People::setname(char *name){ m_name = name; }
void People::setage(int age){ m_age = age; }
char* People::getname(){ return m_name; }
int People::getage(){ return m_age;}
//派生類 Student
class Student: public People{
public:
    void setscore(float score);
    float getscore();
private:
    float m_score;
};
void Student::setscore(float score){ m_score = score; }
float Student::getscore(){ return m_score; }

class Student: public People;此語句是定義了Student繼承了,people。

詳細(xì)拆解如下:先同普通class定義一樣。先寫class Student,然后后+一個(gè)“:”即單個(gè)封號(hào),封號(hào)后+一個(gè)繼承類型的定義(一共有3種繼承方式,后文詳細(xì)說明),繼承方式說明后,+被繼承的class名稱寫上,最后不要忘記“;”構(gòu)成一個(gè)完整的語句。

3.2 繼承類型的詳細(xì)說明

public、protected、private 指定繼承方式,這3種關(guān)鍵字不僅僅只可以修飾成員變量,還可以修飾繼承的類型,這一點(diǎn)需切記。

以下是詳細(xì)的解釋:

1) public繼承方式

  • 基類中所有 public 成員在派生類中為 public 屬性;
  • 基類中所有 protected 成員在派生類中為 protected 屬性;
  • 基類中所有 private 成員在派生類中不能使用。

2) protected繼承方式

  • 基類中的所有 public 成員在派生類中為 protected 屬性;
  • 基類中的所有 protected 成員在派生類中為 protected 屬性;
  • 基類中的所有 private 成員在派生類中不能使用。

3) private繼承方式

  • 基類中的所有 public 成員在派生類中均為 private 屬性;
  • 基類中的所有 protected 成員在派生類中均為 private 屬性;
  • 基類中的所有 private 成員在派生類中不能使用。
基類成員在基類中的屬性public 繼承protected 繼承private 繼承
publicpublicprotectedprivate
protectedprotectedprotectedprivate
private不可訪問不可訪問不可訪問

記憶口訣(簡短好記)

“繼承方式是天花板,成員權(quán)限不上升”

解釋:

  • 繼承方式(public /protected/private)決定了派生類中成員的最高訪問權(quán)限(天花板)。
  • 基類成員在派生類中的訪問權(quán)限 = min (基類原權(quán)限,繼承方式權(quán)限)(取更嚴(yán)格的那個(gè))。
  • 無論哪種繼承方式,基類 private 成員始終不可訪問
  • protected 成員和 private 成員類似,也不能通過對(duì)象訪問。但是當(dāng)存在繼承關(guān)系時(shí),protected 和 private 就不一樣了:基類中的 protected 成員可以在派生類中使用,而基類中的 private 成員不能在派生類中使用,下面是詳細(xì)講解。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 深入理解C預(yù)處理器

    深入理解C預(yù)處理器

    下面小編就為大家?guī)硪黄钊肜斫釩預(yù)處理器。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • C語言動(dòng)態(tài)順序表實(shí)例代碼

    C語言動(dòng)態(tài)順序表實(shí)例代碼

    大家好,本篇文章主要講的是C語言動(dòng)態(tài)順序表實(shí)例代碼,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • c++ 連接兩個(gè)字符串實(shí)現(xiàn)代碼 實(shí)現(xiàn)類似strcat功能

    c++ 連接兩個(gè)字符串實(shí)現(xiàn)代碼 實(shí)現(xiàn)類似strcat功能

    c++ 連接兩個(gè)字符串實(shí)現(xiàn)代碼 實(shí)現(xiàn)類似strcat功能,需要的朋友可以參考下
    2012-05-05
  • C++中高性能內(nèi)存池的實(shí)現(xiàn)詳解

    C++中高性能內(nèi)存池的實(shí)現(xiàn)詳解

    在 C/C++ 中,內(nèi)存管理是一個(gè)非常棘手的問題,我們?cè)诰帉懸粋€(gè)程序的時(shí)候幾乎不可避免的要遇到內(nèi)存的分配邏輯。本文將通過C++實(shí)現(xiàn)高性能內(nèi)存池,感興趣的可以了解一下
    2022-10-10
  • C++ primer基礎(chǔ)之容器insert

    C++ primer基礎(chǔ)之容器insert

    這篇文章主要介紹了C++ primer基礎(chǔ)之容器insert的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • VC中CWinThread類以及和createthread API的區(qū)別分析

    VC中CWinThread類以及和createthread API的區(qū)別分析

    這篇文章主要介紹了VC中CWinThread類以及和createthread API的區(qū)別分析,較為詳細(xì)的講述了CWinThread類的原理,并以實(shí)例形式對(duì)AfxBeginThread函數(shù)的內(nèi)部實(shí)現(xiàn)進(jìn)行了解釋說明,需要的朋友可以參考下
    2014-10-10
  • c++遞歸解數(shù)獨(dú)方法示例

    c++遞歸解數(shù)獨(dú)方法示例

    這篇文章主要介紹了c++遞歸解數(shù)獨(dú)方法示例,需要的朋友可以參考下
    2014-03-03
  • 基于C++泛型編程職工管理系統(tǒng)

    基于C++泛型編程職工管理系統(tǒng)

    這篇文章主要介紹了基于C++泛型編程職工管理系統(tǒng),前面介紹到了C++的泛型編程,并實(shí)現(xiàn)了萬能容器,不過那使用的是數(shù)組,今天呢咱帶大家實(shí)踐一下使用泛型技術(shù),結(jié)合單鏈表實(shí)現(xiàn)一個(gè)職工管理系統(tǒng),需要的朋友可以參考一下
    2022-02-02
  • C語言鏈表案例學(xué)習(xí)之通訊錄的實(shí)現(xiàn)

    C語言鏈表案例學(xué)習(xí)之通訊錄的實(shí)現(xiàn)

    為了將所學(xué)到的鏈表的知識(shí)進(jìn)行鞏固學(xué)習(xí),做到學(xué)以致用,本文將利用鏈表制作一個(gè)簡單的通訊錄。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-10-10
  • C語言中`||`的短路機(jī)制詳解

    C語言中`||`的短路機(jī)制詳解

    在C語言中,邏輯或運(yùn)算符(||)是一種常用的邏輯運(yùn)算符,用于組合多個(gè)條件表達(dá)式,C語言中的邏輯或運(yùn)算符具有短路機(jī)制,這是一種非常重要的概念,本文將深入解釋C語言中的||短路機(jī)制以及其在編程中的應(yīng)用,感興趣的朋友跟隨小編一起看看吧
    2024-01-01

最新評(píng)論

衡阳县| 惠水县| 柞水县| 葫芦岛市| 萨嘎县| 武乡县| 邵武市| 手机| 新密市| 疏勒县| 龙里县| 咸宁市| 鹤壁市| 南澳县| 永川市| 阜宁县| 尤溪县| 祁东县| 宁河县| 泸水县| 永川市| 嫩江县| 安西县| 利津县| 克拉玛依市| 华阴市| 宜州市| 灵山县| 穆棱市| 拉萨市| 东兰县| 泾川县| 盘锦市| 济南市| 隆昌县| 轮台县| 寿阳县| 巢湖市| 怀化市| 合江县| 沿河|