博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P499 usebrass2
阅读量:6913 次
发布时间:2019-06-27

本文共 3156 字,大约阅读时间需要 10 分钟。

有两种方式可以实现多态公有继承

1) 在派生类中重新定义基类的方法
2) 使用虚方法
如下是使用虚方法
brass.h

#ifndef BRASS_H#define BRASS_H#include 
class Brass{private: std::string fullName; //客户姓名 long acctNum; //账号 double balance; //当前结余public: Brass(const std::string & s="Nullbody",long an=-1, double bal=0.0); void Deposit(double amt); //存款 virtual void withdraw(double amt); //取款 double Balance() const; //显示余额 virtual void ViewAcct() const; virtual ~Brass() {}};//Brass Plus Account Classclass BrassPlus:public Brass{private: double maxLoan; //透支的上线 double rate; //透支贷款利率 double owesBank; //当前的透支额度public: BrassPlus(const std::string &s="Nullbody",long an=-1, double bal=0.0,double ml=500,double r=0.11125); BrassPlus(const Brass &ba,double ml=500, double r=0.11125); 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 // BRASS_H

main.cpp

#include 
#include "brass.h"using namespace std;//formatting stufftypedef std::ios_base::fmtflags format;typedef std::streamsize precis;format setFormat();void restore(format f,precis p);//Brass methodsBrass::Brass(const string &s, long an, double bal){ fullName=s; acctNum=an; balance=bal;}//储蓄函数void Brass::Deposit(double amt){ if(amt<0) { cout<<"Negative deposit not allowed;" <<"deposit is cancelled\n"; } else balance=balance+amt;}void Brass::withdraw(double amt){ //set up ###.##format format initialState=setFormat(); precis prec=cout.precision(2); if(amt<0) { cout<<"withdrawal amouut must be positive;" <<"withdrawal canceled\n"; } else if(amt<=balance) { balance=balance-amt; } else { cout<<"withrdrawl amout of $"<
<<" exceeds your balance\n" <<"withdrawal canceled\n"; } restore(initialState,prec);}double Brass::Balance() const{ return balance;}void Brass::ViewAcct() const{ //set up ###.## format format initialState=setFormat(); precis prec=cout.precision(2); cout<<"Client:"<
<
>tempnum; cout<<"Enter opening balance:$"; cin>>tempbal; cout<<"Enter 1 for Brass Account or" <<"2 for BrassPlus Account:"; while(cin>>kind &&(kind!='1' && kind!='2')) cout<<"Enter either 1 or 2"; if(kind == '1') { p_clients[i]=new Brass(temp,tempnum,tempbal); } else //输入的kind是2 { double tmax,trate; cout<<"Enter the overdraft limit:$"; //overdraft 透支 cin>>tmax; cout<<"Enter the interest rate" <<"as a decimal fraction:"; cin>>trate; p_clients[i]=new BrassPlus(temp,tempnum,tempbal,tmax,trate); } while(cin.get()!='\n') continue; } //for(int i=0;i
ViewAcct(); cout<

运行效果如下

1327401-20180911151715165-1266683026.png

开发环境Qt Creator 4.0.3 (Community)

转载于:https://www.cnblogs.com/Manual-Linux/p/9627875.html

你可能感兴趣的文章
【CSS进阶】伪元素的妙用2 - 多列均匀布局及title属性效果
查看>>
【VS2013】设定Nuget代理
查看>>
php xls 导出乱码解决方案
查看>>
SwipeBackActivity 的使用
查看>>
逻辑卷、物理卷、卷组 的关系
查看>>
tkinter 弹出窗口 传值回到 主窗口
查看>>
百度面试
查看>>
1211Bug with integer literals in PLSQL
查看>>
Linux 权限管理之目录权限限制
查看>>
再谈矩阵分解在推荐系统中的应用
查看>>
ABAP 面试问题及答案(一):数据库更新及更改 SAP Standard (转)
查看>>
Top 10 JavaScript编辑器,你在用哪个?
查看>>
数据访问层的优化思路
查看>>
饭后最该知道N件事
查看>>
一文教你看懂大数据的技术生态圈 Hadoop,hive,spark
查看>>
关于本地分区索引和索引组织表保证唯一性的限制
查看>>
MaxCompute Studio 2.8.1 新版本发布啦!
查看>>
《区块链原理、设计与应用》一2.5 认识上的误区
查看>>
当所有编程语言都在靠齐的时候
查看>>
苹果拥抱IBM背后:大数据推动手机行业洗牌
查看>>