詳解C 基礎 類繼承

2022-09-28 01:54:08 字數 1993 閱讀 7477

一、前言

好吧,本系列部落格已經變成了《c++ primer plus》的讀書筆記,尷尬。在使用c語言時,多通過新增庫函式的方式實現**重用,但有乙個弊端就是原來寫好的**並不完全適用於現在的情況。oop設計思想中類的繼承相比來說更為靈活,可以新增新的資料成員和方法,也能修改繼承下來方法的實現細節,同時還保留了原有的**。開始進入正題。

二、類繼承示例

場景如下:現需要記錄桌球運動成員的資訊,包括姓名和有無空餘桌台。其中有一部分成員參加過比賽,需要將這一部分單獨提出並記錄他們在比賽中的比分。因此,參加過比賽的成員所屬的類就是素有成員所屬類的派生類物件了。

類宣告:

#ifndef tabtenn_h_

#define tabtenn_h_

#include

using std::string;

class tabletennisplayer

; void resettable(bool v) ;

};//derived class

class ratedplayer:public tabletennisplayer //tabletennisplayer是基類

void resetrating (unsigned int r)

};#endif

tabtenn.h

類方法定義:

#include

#include "tabtenn.h"

tabletennisplayer::tabletennisplayer (const string& fn,const string& ln,bool ht):

firstname(fn),lastname(ln),hastable(ht)//成員初始化列表

{}void tabletennisplayer::name() const

//ratedplayer methods

//派生類建構函式必須呼叫基類建構函式

ratedplayer::ratedplayer(unsigned int r,const string& fn,const string& ln,bool ht):

tabletennisplayer(fn,ln,ht)//派生類建構函式首先建立基類物件,使用初始化列表完成

ratedplayer::ratedplayer(unsigned int r,const tabletennisplayer& tp):

tabletennisplayer(tp),rating(r)

{}tabtenn.cpp

上述**將基類tabletennisplayer和派生類ratedplayer放在了一起。ratedplayer類宣告中使用:public name_of_base_class 表示公有派生。在派生類的宣告中要新增自己的建構函式和額外的成員函式和方法。這裡派生類建構函式中學問很大。

在程式設計客棧建立派生類物件之前必須先建立基類物件,這是因為派生類的方法無法直接訪問基類的私有成員。那問題來了:當建立新的派生類物件時,會自動呼叫派生類建構函式。如何實現在呼叫派生類建構函式之前就呼叫基類建構函式建立基類物件呢?(好繞口)這裡需要使用建構函式的特有語法——初始化列表。在程式指標指向派生類建構函式大括號內第一行之前即在初始化列表中完成了基類建構函式的呼叫。為了方便從基類物件中直接選出派生類物件(基類物件包含派生類物件),使用第二個建構函式,直接為基類物件新增比分資訊獲得。

三、應用程式示例

應用程式**:

#include www.cppcns.com>

#include "tabtenn.h"

using std::endl;

using std::cout;

int main()

usett.cpp

player和rplayer分別代表基類物件和派生類物件。rplayer2和player1其實是同乙個人,本來參加過比賽的成員就是從所有成員中挑選出來的。應用該程式比較簡單,這裡就不過多描述了。

本文標題: 詳解c++基礎——類繼承

本文位址: /ruanjian/c/257413.html

C 基礎(5) 類繼承

1.從乙個類派生出另乙個類時,原始類稱為基類,繼承類稱為派生類。class tabletennisplayer 乙個簡單的基類 void resettable bool v 將ratedplayer類宣告為從tabletennisplayer類派生而來 class ratedplayer publi...

C 類繼承題目練習詳解

編寫 animal 類和 dog 類 根據使用者輸入的數值,建立相應個數的 animal 物件和 dog 物件 10分 題目內容 1.編寫兩個類 dog類繼承animal類 animal類和dog類各有乙個預設建構函式,分別輸出字串 animal 和 dog 輸出字串後換行 2.編寫主函式 在主函式...

C 基礎 類模板詳解

template class 類模板名 類模板中成員函式放在模板類外面定義語法 template 型別參數列 返回值型別 類模板名 型別引數名列表 成員函式名 參數列 用類模板定義乙個物件寫法如下 類模板名 真實引數型別表 物件名 建構函式實際參數列 類模板名 真實引數型別表 物件名 例項如下 in...