求助:如何理解这样的类指针用法,谢谢。
从百度下载了一个C++课程设计源程序,并通过了编译与运行,程序OK。但读到程序中类指针用法时,一时找不到这样用法的出处,故难以理解,请大虾指点,谢谢,祝春节快乐!
程序进行了简化,问题在程序中标注的问号处,谢谢。
#include <iostream.h>
#include <fstream.h>
#include <string.h>
//全局数据,对象
double CSalary; //文员的基本工资
double SSalary; //业务员的基本工资
double APSalary; //行政人员的基本工资
int ID; //员工工号(要保证唯一)
class Person //员工类
{
protected:
int No; //编号
char Name[20]; //姓名
char Sex[10]; //性别
char Tel[20]; //联系方式
char Nation[30]; //国籍
int Duty; //职位
double Earning; //收入
Person *next;
public:
Person(char ID,char *Name,int Duty)
{
this->Duty=Duty;
strcpy(this->Name,Name); // strcpy(string,ptr)
this->No=ID;
}
friend class Company;
};
class Cservant:public Person //文员类
{
private:
double Workload; //上个月完成工作量
public:
Cservant(char ID,char *Name,int Duty,double Workload):Person(ID,Name,Duty)
{
this->Workload=Workload;
}
};
class Company //公司类
{
private:
Person *Worker; //员工表
void Clear(); //清除内存中数据
public:
Company()
{
Worker=0;
Load();
}
~Company(){
Person *p;
p=Worker;
while(p)
{
p=p->next;
delete Worker; // Person *Worker; //员工表
Worker=p;
}
Worker=0;
}
void Add(); //增加人员
};
void Company::Add()
{
Person *p; //新结点指针
int Duty;
char Name[20];
char Sex[10]; //性别
char Tel[20]; //联系方式
char Nation[30]; //国籍
double Workload;
cout<<"\n** 新增员工 **\n"; // \n换行
//输入员工信息
cout<<"输入工号:"; cin>>ID;
cout<<"输入职位(1-文员 2-行政人员兼职文员 3-文员兼职业务员 4-行政人员 5-业务员):"; cin>>Duty;
cout<<"输入姓名:"; cin>>Name;
cout<<"输入性别:"; cin>>Sex;
cout<<"输入联系方式:"; cin>>Tel;
cout<<"输入国籍:"; cin>>Nation;
if(Duty!=4)
{
cout<<"上个月完成工作量:"; cin>>Workload;
}
//创建新员工结点
switch(Duty)
{
case 1:p=new Cservant(ID,Name,Duty,Workload); break;
// ??????????????????????
// 没见过把一个成员函数直接赋给类指针的用法,故不知何意。
}
p->next=0;
}
[ 本帖最后由 bardon_2009 于 2012-1-18 09:53 编辑 ]