使用公有繼承,可以達到如下的特性:
// 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 ...