类和继承(一). c++

 继承的定义:

      在原有的类型的基础上创建新的类型,新类型继承(拥有)了已有类型的所有的特征和行为(变量成员和函数成员).

注:但是子类不会继承基类构造函数和析构函数.

作用与好处:

       继承实现了代码的复用,减少了代码冗余,提高了开发效率.

继承与类:

        处于层次关系中根部(最基础)的类,称为“基础类”,或叫“父类”或“基类”.

  基类负责定义层次关系中所有类共有的特征和行为.

        由根部演化而来的类,称为“派生类”,或叫“子类”.

  派生类获取基类的行为和特征,自动复制成派生类自己的行为和特征.

定义基类:

同定义普通的类的方式是一样的如下:

不过定义基类希望以下:

一种是派生类之间继承不需要修改的行为.

二是基类希望派生类提供自己的新定义,以覆盖基类继承过来的定义,这种函数称为虚函数.

访问成员空间的定义:

·public : 基类的公有成员之间在任何地方都可以直接访问,包括派生类(派生类拥有基类的所有的属性.(公开,都可以用)

·private : 基类的私有成员只能通过本身成员函数和友元函数访问.(私有的)

·protected : 如果有些成员不希望对外公开,单身希望可以被派生类直接访问,则可以使用protected对成员进行修饰.(家庭共有,外人不可以用)只能在基类和派生类里面使用,在其他作用域里不能直接调用.

定义派生类:

例:

单继承:只继承一个基类;

多继承:继承多个基类.

继承方式:

·public: 基类的公有成员,通过公有继承后变公有;

             类的私有成员,通过公有继承后变私有;

            类的保护成员,通过公有继承后变保护成员;(基本不变)

private: 基类的公有成员,通过公有继承后变私有;

             类的私有成员,通过公有继承后变私有;

            类的保护成员,通过公有继承后变私有成员;(全变私有)

protected: 基类的公有成员,通过公有继承后变保护;

             类的私有成员,通过公有继承后变私有;

            类的保护成员,通过公有继承后变保护成员;

派生类占有空间大小,等于基类占有空间大小加上派生类自己的成员大小,(考虑字节对齐)

派生类的组成:

从整体上来看,分为两部分:

·从基类继承过来的成员.(整体上看相当于一个基类的子对象)

注:派生类创建对象会自动调用基类的构造函数进行初始化,但是如果需要显示调用的话,在子类构造函数的初始化列表里调用基类的构造函数.形式如下

·派生类自己的成员.

注:由于不会继承基类的构造和析构函数,在子类需要自己显示定义构造函数和析构函数,用来初始化派生类自己新定义的成员.

由于在派生类中继承了基类的所有成员,所以我们能够把公有继承的派生类对象,当作基类对象来使用,具体为:

·基类的引用可以绑定到派生类对象.

·基类指针可以指向派生类对象.

·可以使用派生类对象初始化基类对象.

·可以使用派生类对象给基类对象赋值.

注:当使用派生类对象得到一个基类对象指针/引用时,该基类对象指针/引用是无法访问到派生类新增成员.只能访问派生类继承过来的基类成员.因为引用和指针依旧是基类的.

派生类里的成员隐藏:

·如果在派生类中增加一个与基类同名的成员,当使用派生类访问这个同名成员的时候,默认调用的是派生类自己的版本,而不是继承过来的版本,相当于基类的同名函数被派生类的同名函数所覆盖了.

注:如果需要使用基类的同名版本,可以指定基类的作用域.

Son s;
s.getname();
s.Father::getname();//指定作用域

注:1.友元函数不会被继承,因为友元函数是全局的,并不属于基类.只是有基类授予的访问权限.

     2.赋值运算符重载不能被继承.函数属于基类的版本,不能访问派生类新增的成员.实质上只是继承了基类的版本,只能处理基类的成员.

     3.基类的成员变量不能用派生类的初始化列表进行初始化,因为基类的有些对象不能被子类访问,只能通过调用基类的构造函数初始化.

  • 28
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值