C++primer类继承例题复现

初学C++时想复现C++primer13章中关于类继承的例题,总体上与书中代码相同,但自己加了一个set的文件来替代直接调用构造函数初始化,但发生了错误,结果没有执行set函数,显示输入存款后也直接终止程序了
感谢大家,头文件和实现如下:

用代码块功能插入代码,请勿粘贴截图
#ifndef BASS_H
#define BASS_H
#include
#include
class bass
{
private:
    std::string name;
    int count;
    double balance;
public:
    bass();
    bass(std::string &s,int c,double b);
    virtual ~bass();
    virtual void set();
    void deposit(double m);
    virtual void draw(double m);
    double Balance()const;
    virtual void show()const;
};
class bassp:public bass
{
private:
    double rate;
    double max;
    double owe;
public:
    bassp();
    bassp(std::string &s,int n,double b,double r=0.1,double m=500);
    bassp(bass &b,double r=0.1,double m=500);
    virtual void draw(double m);
    virtual void show()const;
    virtual void set();
};
#endif
#include
#include"bass.h"
    bass::bass()
    {
        name="none";
        count=0;
        balance=0.0;
    }
    bass::bass(std::string &s,int c,double b)
    {
        name=s;
        count=c;
        balance=b;
    }
    bass::~bass()
    {
    }
    void bass::set()
    {
        std::cout<<"姓名";
        getline(std::cin,name);
        std::cout<<"账户";
        std::cin>>count;
        std::cout<<"余额";
        std::cin>>balance;
    }
    void bass::deposit(double m)
    {
        balance+=m;
    }
    void bass::draw(double m)
    {
        if(m>balance)
            std::cout<<"?"<else
            balance-=m;
        std::cout<<"done"<double bass::Balance()const
    {
        return balance;
    }
    void bass::show()const
    {
        std::cout<bassp():bass()
    {
    }
    bassp::bassp(std::string &s,int n,double b,double r,double m):bass(s,n,b)
    {
        rate=r;
        max=m;
        owe=0.0;
    }
    bassp::bassp(bass &b,double r,double m):bass(b)
    {
        rate=r;
        max=m;
    }
    void bassp::draw(double m)
    {
        double bal=Balance();
        if(mdraw(m);
        else if(mdouble temp;
            temp=m-bal;
            bass::deposit(temp);
            bass::draw(temp);
            owe+=temp*(1+rate);
        }
        else
            std::cout<<"NO!";
    }
    void bassp::show()const
    {
        bass::show();
        std::cout<void bassp::set()
    {
        bass::set();
        std::cout<<"费率";
        std::cin>>rate;
        std::cout<<"上限";
        std::cin>>max;
    }
#include
#include
#include"bass.h"
int main()
{
    bass *p[2];
    std::string NAME;
    double N;
    double M;
    for(int i=0;i<2;i++)
    {
        int j=0;
        std::cout<<"选择客户类型:1普通,2vip\n";
        std::cin>>j;
        if(j=='1')
        {
            p[i]=new bass();
            p[i]->set();
        }
        else if(j=='2')
        {
            p[i]=new bassp();
            p[i]->set();
        }
            std::cout<<"存款数量:";
            std::cin>>N;
            p[i]->deposit(N);
            std::cout<<"取款数量:";
            std::cin>>M;
            p[i]->draw(M);
    }
    std::cout<<"\n"<<"\n"<<"\n";
    for(int i=0;i<2;i++)
    {
            p[i]->show();
            std::cout<return 0;
}
运行结果及报错内容

结果没有执行set函数,显示输入存款后也直接终止程序了

img

判断语句有问题,改成j == 1