简单基类 例子

////////////////////////////////////////////////
///////////////////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;
}

posted @ 2007-02-25 23:00  Edward Xie  阅读(227)  评论(0)    收藏  举报