关于类的继承
有以下代码:(以下类中的函数都是些输入输出函数,故将其全部省略、
还有一些函数的实现也将代码部份省略,因为篇幅过大,不过不会影响
全文的大意!这是书上代码,没有语法及逻辑错误,小弟只是有些概念
不懂而已!)
class Date{
protected:
static const int dys[];
long int ndays;
public:
//....
};
这是一个日期类,他能输入日期和显示日期
class SSN{
long int ssn;
public:
//....
}
这就是一个存SSN号的类;
class Person{
pubic:
enum Sex{unknow,male,female};
enum MaritalStatus{single,married,divorced,vidowed);
protected:
string name;
string address;
string phone;
SSN ssn;
Date dob;
Sex sex;
Maritalstatus mstatus;
pubic:
//.......
};
class Employee:public Person{
protected:
Date datehired;
public:
//......
};
以上类里面只是多了个日期;
class Money{ //工资,只有一个长整型类;
double value;
public:
//......
};
class WagedEmployee:public Employee{
Money hourlywage;
public:
//......
};
string ReadString(string& prompt) //输入一个字符串并将其首地址返回;
{
//....
}
Date ReadDate(string& prompt) //输入一个日期,Date型并将其值返回;
{
//......
}
Money ReadMoney(string& prompt) //输入一个money型数据并将其返回;
{
//......
}
void PersonInput(Person* pPerson) //通过调用以上三个输入函数将pPerson指向的person类
{ //的数据成员初始化;
//.....
}
void EmployeeInPut(Employee* pEmployee) //使用以上输入函数将pEmployee指向类的数据成员
{ //初始化;
//......
}
int main()
{
Person* pPerson=0;
pPerson=new WagedEmployee;
PersonInput(pPerson);
EmployeeInput((Employee*)pPerson);
WagedEmployeeInput((WagedEmployee*)pPerson);
pPerson->FormattedDisplay(std::cout); //这上以上类上的成员函数;
delete pPerson;
return 0;
}
对于以上程序有以下几点不懂:
1、person是一个抽象基类,此程序的意思是想初始化一个WagedEmployee对象,为什
会申明一个指向person的指针呢?
2、main 函数中的pPerson=new WagedEmployee;是怎么回事呢?这个指针是指向一个
person对象的!
3、当一个基 类派生出另一个类时,这个类不是有基类所有的成员(成员函数和数据成员)
吗?且有自己独有的东西,那么这些东西在内存中是怎么分配的呢?它们是一体的?还是
分开存储的呢?如果他们是一体的,那么以上的main程序这样写不是更容易理解吗?
WagedEmployee* pPerson=0;
pPerson=new WagedEmployee;
EmployeeInput(pPerson);//这个函数适当应做修改以适应我以上的想法!
求各位大虾指点!
小弟先谢过了!