C++中類繼承的示例分析-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(guān)C++中類繼承的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今,先為興寧等服務(wù)建站,興寧等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為興寧企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

類繼承示例

場景如下:現(xiàn)需要記錄乒乓球運動成員的信息,包括姓名和有無空余桌臺。其中有一部分成員參加過比賽,需要將這一部分單獨提出并記錄他們在比賽中的比分。因此,參加過比賽的成員所屬的類就是素有成員所屬類的派生類對象了。

類聲明:

#ifndef TABTENN_H_
#define TABTENN_H_

#include <string>

using std::string;

class TableTennisPlayer
{
private:
  string firstname;
  string lastname;
  bool hasTable;

public:
  TableTennisPlayer (const string& fn = "none",
            const string& ln = "none",bool ht = false);
  void Name() const;
  bool HasTable() const {return hasTable;};
  void ResetTable(bool v) {hasTable = v;};
};

//derived class
class RatedPlayer:public TableTennisPlayer //TableTennisPlayer是基類
{
private:
  unsigned int rating;
public:
  RatedPlayer(unsigned int r = 0,const string& fn = "none",const string& ln = "none",
        bool ht = false);//默認(rèn)構(gòu)造函數(shù)
  RatedPlayer(unsigned int r,const TableTennisPlayer& tp);//通過基類對象創(chuàng)建派生類對象構(gòu)造函數(shù)
  unsigned int Rating() const {return rating;}
  void ResetRating (unsigned int r) {rating = r;}
};

#endif

tabtenn.h

類方法定義:

#include <iostream>
#include "tabtenn.h"

TableTennisPlayer::TableTennisPlayer (const string& fn,const string& ln,bool ht):
  firstname(fn),lastname(ln),hasTable(ht)//成員初始化列表
{}

void TableTennisPlayer::Name() const
{
  std::cout << lastname << ", " << firstname;
}

//RatedPlayer methods
//派生類構(gòu)造函數(shù)必須調(diào)用基類構(gòu)造函數(shù)
RatedPlayer::RatedPlayer(unsigned int r,const string& fn,const string& ln,bool ht):
  TableTennisPlayer(fn,ln,ht)//派生類構(gòu)造函數(shù)首先創(chuàng)建基類對象,使用初始化列表完成
{
  rating = r;
}

RatedPlayer::RatedPlayer(unsigned int r,const TableTennisPlayer& tp):
  TableTennisPlayer(tp),rating(r)
{}

tabtenn.cpp

上述代碼將基類TableTennisPlayer和派生類RatedPlayer放在了一起。RatedPlayer類聲明中使用:public name_of_base_class 表示公有派生。在派生類的聲明中要添加自己的構(gòu)造函數(shù)和額外的成員函數(shù)和方法。這里派生類構(gòu)造函數(shù)中學(xué)問很大。

在創(chuàng)建派生類對象之前必須先創(chuàng)建基類對象,這是因為派生類的方法無法直接訪問基類的私有成員。那問題來了:當(dāng)創(chuàng)建新的派生類對象時,會自動調(diào)用派生類構(gòu)造函數(shù)。如何實現(xiàn)在調(diào)用派生類構(gòu)造函數(shù)之前就調(diào)用基類構(gòu)造函數(shù)創(chuàng)建基類對象呢?(好繞口)這里需要使用構(gòu)造函數(shù)的特有語法——初始化列表。在程序指針指向派生類構(gòu)造函數(shù)大括號內(nèi)第一行之前即在初始化列表中完成了基類構(gòu)造函數(shù)的調(diào)用。為了方便從基類對象中直接選出派生類對象(基類對象包含派生類對象),使用第二個構(gòu)造函數(shù),直接為基類對象添加比分信息獲得。

三、應(yīng)用程序示例

應(yīng)用程序代碼:

#include <iostream>
#include "tabtenn.h"

using std::endl;
using std::cout;

int main()
{
  TableTennisPlayer player1("Tara","Boomdea",false);//創(chuàng)建基類對象
  RatedPlayer rplayer1(1140,"Mallory","Duck",true);//創(chuàng)建派生類對象
  player1.Name();
  if(player1.HasTable())
    cout << ": has a table.\n";
  else
    cout << ": hasn't a table.\n";
  rplayer1.Name();
  if(rplayer1.HasTable())
    cout << ": has a table.\n";
  else
    cout << ": hasn't a table.\n";

  //initialize RatedPlayer using TableTennisPlayer object
  RatedPlayer rplayer2(1212,player1);
  cout << "Name: ";
  rplayer2.Name();
  cout << ";Rating: " << rplayer2.Rating() << endl;
  return 0;
}

usett.cpp

player和rplayer分別代表基類對象和派生類對象。rplayer2和player1其實是同一個人,本來參加過比賽的成員就是從所有成員中挑選出來的。應(yīng)用該程序比較簡單,這里就不過多描述了。

感謝各位的閱讀!關(guān)于“C++中類繼承的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站muchs.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站名稱:C++中類繼承的示例分析-創(chuàng)新互聯(lián)
標(biāo)題鏈接:http://muchs.cn/article22/hijcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計公司、定制網(wǎng)站、面包屑導(dǎo)航、域名注冊、網(wǎng)站改版、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)