请问此程序哪里问题了

来源:百度知道 编辑:UC知道 时间:2024/07/04 12:06:52
#include<iostream.h>
#include<string.h>
class Employee
{public:
Employee(char a[20],char b[20])
{strcpy(name,a);strcpy(number,b);}
char*name,*number;double salary;
};

class salesman:public Employee
{public:
double df;
salesman(double i,char*m,char*n):sales(i),Employee(m,n){}
void pay(){df=sales/200;}
void print(){cout<<Employee::number<<"销售员工"<<Employee::name<<"的工资为:"<<df<<endl;}
private:
double sales;
};

class salesmanager:public salesman
{public:
salesmanager(double q,char*m,char*n):salesman(q,m,n){}
void pay(){monthlypay=df+8000;}
void print(){cout<<number<<"销售经理"<<name<<"的工资为:"<<monthlypay<<endl;}
private:double monthlypay;
};

void main()
{double sum;char m[20],b[20],c;cout<<"请输入月销售总额:"<

是你第一个类里的strcpy出问题,由于name,number两个指针没有初始化过,所以复制就会出现寻不到内存地址的问题。只需改成name=a;number=b;就行了,同时实现了初始化和赋值;
p.s:你的pay()函数没见你用过,估计就算解决了运行问题,数字结果也不会对