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

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)
{
//.....................................
}
派生类的构造只能描述他的成员和他直接基类的初始式,无法直接初始化基类的成员。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值