简单基类 例子
////////////////////////////////////////////////
///////////////////table.h//////////////////////
#ifndef TABLE1_H_
#define TABLE1_H_
class TableTennisplayer
{
private:
enum {LIM=20};
char firstname[LIM];
char lastname[LIM];
bool hasTable;
public:
TableTennisplayer (const char * fn="none",const char * ln="none",bool ht=false);
void Name() const;
bool HasTable () const {return hasTable;}
void ResetTable (bool v) {hasTable=v;}
};
class RatedPlayer:public TableTennisplayer
{
private:
unsigned int rating;
public:
RatedPlayer (unsigned int r=0,const char * fn="none",const char * ln="none",bool ht=false);
RatedPlayer (unsigned int r,const TableTennisplayer & tp);
unsigned int Rating () {return rating;}
void RasetRating (unsigned int r) {rating=r;}
};
#endif
//////////////////////////////////////////////////////////
////////////////////table.cpp/////////////////////////////
#include "table.h"
#include <iostream>
#include <cstring>
TableTennisplayer::TableTennisplayer (const char * fn,const char * ln,bool ht)
{
strncpy(firstname,fn,LIM-1);
firstname[LIM-1]='\0';
strncpy(lastname,ln,LIM-1);
lastname[LIM-1]='\0';
hasTable=ht;
}
void TableTennisplayer::Name() const
{
std::cout<<lastname<<", "<<firstname;
}
RatedPlayer::RatedPlayer (unsigned int r,const char * fn,const char * ln,bool ht):TableTennisplayer
(fn,ln,ht) //使用初始化列表调用基类构造函数为基类成员赋值,只有构造函数可以用初始化列表
{
rating=r;
}
RatedPlayer::RatedPlayer(unsigned int r,const TableTennisplayer & tp):TableTennisplayer(tp),rating(r)
//调用基类的默认赋值构造函数
{
}
////////////////////////////////////////////////////////////////
///////////////////main.cpp/////////////////////////////////////
#include <iostream>
#include "table.h"
int main(void)
{
using std::cout;
using std::endl;
TableTennisplayer player1("tara","boomdea",false);
RatedPlayer rplayer1(1140,"mallory","duck",true);
rplayer1.Name();
if (rplayer1.HasTable())
cout<<": has a table.\n";
else
cout<<": hasn't tanle.\n";
player1.Name();
if (player1.HasTable())
cout<<": has a table.\n";
else
cout<<": hasn't table.\n";
cout<<"Name: ";
rplayer1.Name();
cout<<"; rating: "<<rplayer1.Rating()<<endl;
RatedPlayer rplayer2(1212,player1);
cout<<"Name: ";
rplayer2.Name();
cout<<": rating: "<<rplayer2.Rating()<<endl;
return 0;
}


浙公网安备 33010602011771号