您的位置:首页 > 编程语言 > C语言/C++

C++学习笔记-类的继承(派生类)

2005-11-02 22:22 585 查看
1、引言
马克思说:世界是联系的,哈哈。。。搞笑了。
进入正题,现实中的一个概念不是鼓励存在的,总是与一些相关的概念存在的,他们之间总是相互联系的,而且他们之间会表现出一种层次的关系,共性+层次-----我们就引出了派生类的概念。
2、派生类
(1)、employee与manager
struct Employee
{
string first_name,last_name;
//....................
}
struct Manager
{
Employee emp;
list<Employee*> group; //manager领导的employee
short level;
//.....................
}
一个经理同时也是雇员,manager 具有employee所有的属性,但相反却不是这样的,这样就出现了一个问题:在list<Employee* >里无法存在一个manager!但实际上manager也是employee。

----------解决的办法就是明确的说明manager也是employee。
类的继承(派生类)出来解决了这个问题。
struct Manager : public Employee {
list <Employee * > group;
short level;
//...........................................
}
Manager -> Employee Manager 是 Employee的超集。
*定义派生类的时候应该确定定义了基类。
3、成员函数
派生类的成员函数可以访问其基类的public和protected成员,不可访问private成员
4、构造函数和析构函数
如果基类有构造函数,派生类就必须调用基类的一个构造函数,默认的构造函数可以被隐式的调用,如果每个构造函数都有参数,就必须显示的调用。
Employee :: Employee (const string& n, int d)
:family_name(n),department(d) //初始化成员
{
//。。。。。。。。。。。。。。。
}
Manager :: Manager (const string& n,int d)
:Employee(n,d), //初始化基类
level (lvl)
{
//.....................................
}
派生类的构造只能描述他的成员和他直接基类的初始式,无法直接初始化基类的成员。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: