抽象基类的试例,该如何解决

抽象基类的试例



#ifndef   ACCTABC_H_
#define   ACCTABC_H_  

//Abstract   Base   Class
class   AcctABC
{
private:
enum{MAX=35};
char   fullName[MAX];
long   acctNum;
double   balance;
protected:
const   char   *FullName()const{return   fullName;}
long   AcctNum()const{return   acctNum;}
std::ios_base::fmtflags   SetFormat()const;
public:
AcctABC(const   char   *s= "Nullbody ",long   an=-1,
        double   bal=0.0);             //构造函数!
void   Deposit(double   amt);           //函数(存钱)
virtual   void   Withdraw(double   amt)=0;//纯虚函数(取钱)
double   Balance()const{return   balance;};//返回所余额
virtual   void   ViewAcct()const=0;     //纯虚函数
virtual   ~AcctABC(){}
};


//Brass   Account   Class

class   Brass:public   AcctABC
{
public:
Brass(const   char   *s= "Nullbody ",long   an=-1,
double   bal=0):AcctABC(s,an,bal){}
virtual   void   Withdraw(double   amt);
virtual   void   ViewAcct()const;
virtual   ~Brass(){}
};

//Brass   Plus   Account   Class
class   BrassPlus:public   AcctABC
{
private:
double   maxLoan;
double   rate;
double   owesBank;
public:
BrassPuls(const   char   *s= "Nullbody ",long   an=-1,
            double   bal=0.0,double   m1=500,
    double   r=0.10);
BrassPlus(const   Brass   &ba,double   m1=500,double   r=0.1);
virtual   void   ViewAcct()const;
virtual   void   Withdraw(double   amt);
void   ResetMax(double   m){maxLoan=m;}
void   ResetRate(double   r){rate=r;};
void   ResetOwes(){owesBank=0;}
};

#endif


///////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
#include <iostream>
#include <cstring>
#include "acctabc.h "
using   std::cout;
using   std::ios_base;
using   std::endl;

//Abstract   Base   Class

AcctABC::AcctABC(const   char   *s,long   an,double   bal)
{
strncpy(fullName,s,MAX-1);
fullName[MAX-1]= '\0 ';
acctNum=an;
balance=bal;
}
void   AcctABC::Deposit(double   amt)
{
if(amt <0)
cout < < "Negative   deposit   not   allowed: "
        < < "deposit   is   cancellend.\n ";
else
balance+=amt;
}
void   AcctABC::Withdraw(double   amt)
{
balance-=amt;
}
//protected   method
ios_base::fmtflags   AcctABC::SetFormat()const
{
//set   up   ###.##format
ios_base::fmtflags   initialState=
cout.setf(ios_base::fixed,ios_base::floatfield);
cout.setf(ios_base::showpoint);
cout.precision(2);
return   initialState;
}

//Brass   method
void   Brass::Withdraw(double   amt)
{
if(amt <0)
cout < < "Withdrawl   amount   must   be   positive; "
        < < "withdrawl   canceled.\n ";