C++学习中的(。。。)问题

来源:互联网 发布:淘宝有聊天壁纸设置吗 编辑:程序博客网 时间:2024/05/02 00:01

1.erro:no match for ‘operator>>’

  cin>>x>>endl;

cin 不能用换行符,cin的结束字符默认为换行符。


2.静态成员函数
1.只有静态成员函数可以直接通过类名调用
2.静态成员函数可以直接访问该类的静态数据和函数成员,而访问非静态成员,必须通过对象名。


3.派生类成员的标识与访问

class Staff{//员工    int num;    string name;    float rateOfAttend;    int basicSal;    int prize;public:    Staff(){}    Staff(int n,string nn,float r,int b,int p)    {        num=n;        name=nn;        rateOfAttend=r;        basicSal=b;        prize=p;    }    ~Staff(){}    int Output()//基本信息    {        cout<<"员工的基本信息:"<<endl;        cout<<"编号 "<<"姓名 "<<"出勤率 "<<"基本工资 "<<"奖金 "<<endl;        cout<<num<<" "<<name<<" "<<rateOfAttend<<" "<<basicSal<<" "<<prize<<endl;    }    float OutputWage()//实发工资    {        return basicSal+prize*rateOfAttend;    }};class Saleman:public Staff{//销售员    float deductRate;    int personAmount;public:    Saleman(){}    Saleman(int n,string nn,float r,int b,int p,float d,int pa):Staff(n,nn,r,b,p)    {        deductRate=d;        personAmount=pa;    }    ~Saleman(){}    int Output()//基本信息    {    Staff s;//错误在此        s.Output();//错误在此        cout<<"销售员提成比例:"<<deductRate<<endl;        cout<<"个人销售额:"<<personAmount<<endl;    }    float OutputWage(float r,int b,int p,float d,int pa)    {        Staff s;//错误在此        return s.OutputWage()+deductRate*personAmount;//错误在此    }//实发工资{}};

派生类的新增成员隐藏了基类的同名成员,“对象名.成员名”就只能访问到派生类新增的成员 所以此时对基类同名成员的访问,只能通过基类名和作用域分辨符来实现 即 必须明确告诉系统要使用哪个基类的成员
修改如下:

class Staff{//员工    int num;    string name;    float rateOfAttend;    int basicSal;    int prize;public:    Staff(){}    Staff(int n,string nn,float r,int b,int p)    {        num=n;        name=nn;        rateOfAttend=r;        basicSal=b;        prize=p;    }    ~Staff(){}    int Output()//基本信息    {        cout<<"员工的基本信息:"<<endl;        cout<<"编号 "<<"姓名 "<<"出勤率 "<<"基本工资 "<<"奖金 "<<endl;        cout<<num<<" "<<name<<" "<<rateOfAttend<<" "<<basicSal<<" "<<prize<<endl;    }    float OutputWage()//实发工资    {        return basicSal+prize*rateOfAttend;    }};class Saleman:public Staff{//销售员    float deductRate;    int personAmount;public:    Saleman(){}    Saleman(int n,string nn,float r,int b,int p,float d,int pa):Staff(n,nn,r,b,p)    {        deductRate=d;        personAmount=pa;    }    ~Saleman(){}    int Output()//基本信息    {        Staff::Output();//修改在此        cout<<"销售员提成比例:"<<deductRate<<endl;        cout<<"个人销售额:"<<personAmount<<endl;    }    float OutputWage(float r,int b,int p,float d,int pa)    {        return Staff::OutputWage()+deductRate*personAmount;//修改在此    }};
0 0
原创粉丝点击