C 類繼承 公有繼承

2021-10-05 08:38:30 字數 2219 閱讀 6145

使用公有繼承,可以達到如下的特性:

// tabtenn1.h

#ifndef tabtenn1_h_

#define tabtenn1_h_

#include

using std::string;

class

tabletennisplayer

//基類宣告

;void

resettable

(bool v);}

;class

ratedplayer

:public tabletennisplayer //派生類宣告,公有派生

void resetrating (

unsigned

int r)};

#endif

#include

"tabtenn1.h"

#include

tabletennisplayer::tabletennisplayer (

const string & fn,

const string & ln,

bool ht)

:firstname

(fn)

,lastname

(ln)

,hastable

(ht)

void tabletennisplayer::

name()

const

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)//呼叫基類複製建構函式,未定義,預設隱式複製

#ifndef student_h

#define student_h

#include

class

cl_person

//基類

//基類析構函式宣告為虛的

virtual qstring getname()

const

//派生類要重寫,基類宣告為虛的

intgetage()

const};

class

cl_student

:public cl_person //公有派生

virtual qstring getname()

const

;//派生類重寫的基類函式,我們也一般把它宣告為虛的};

#endif

// student_h

#include

"student.h"

cl_person::

cl_person

(qstring name,

int age)

cl_student::

cl_student

(qstring name,

int age,qstring school)

:cl_person

(name,age)

//在初始化列表顯式呼叫基類建構函式

qstring cl_student::

getname()

const

//無重名發生時,直接呼叫即可

C 類繼承2 多型公有繼承

有時候希望同乙個方法在派生類和基類中的行為是不同的。換句話說,方法的行為取決於呼叫該方法的物件。這種較複雜的行為稱為多型 具有多種形態。即同一種方法其行為隨上下文而異。有兩種重要的機制可用於實現多型公有繼承 在派生類中重新定義基類的方法。使用虛方法。如果要在派生類中重新定義基類的方法,通常應將基類方...

C 公有繼承

class base class derived public base派生類宣告時,加上 public 基類名 公有繼承,派生類繼承了成員和介面。也就是說,派生類物件中,有基類的成員。派生類不能直接訪問基類的私有,但是可以訪問基類的公有介面,所以通過基類的公有介面可以間接的訪問基類成員。派生類在宣...

C 公有繼承 私有繼承和保護繼承

在c 中有三種繼承方式 公有繼承 public 私有繼承 private 和保護繼承 protected 1.公有繼承 public 公有繼承 基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然是私有的,不能被這個派生類的子類所訪問。2.私有繼承 private ...