c++---类的继承

c++中的继承

   继承是c++中一个很重要的概念。

一. 继承的概念

通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。

继承是面向对象中类被复用的重要手段,通过继承定义一个类,继承是类型之间的关系建模,共享共有的东西。实现各自本质不同的东西。

继承后,父类的所有成员都会变成子类的一部分。不论是公有、保护或私有成员。不会被继承的是静态成员。


二. 继承的分类

继承有三种:

  1. 共有继承
  2. 私有继承
  3. 保护继承

被继承的类叫基类也叫父类。产生的新类叫做是派生类或者子类。

在被继承之后,他们的关系如下:
三种继承方式

   我们可以得到如下结论:
   1.因为任何一个类的私有成员是不可以被外界访问的,除非是友元函数,所以基类的私有成员不论在这三种哪一种继承方式下,都是不可以被访问的,被外界所看不到的。
   2.公有继承是在父类中是什么成员,在子类中也还是什么成员,在父类中是公有成员,那么在子类中还是公有成员。在父类中是保护成员在子类中依旧是保护成员,私有成员是不可见的,继承不了。
   3.保护继承也比较好理解,就是将所有不是私有的成员全都继承为保护的成员,不论在父类中是公有成员还是保护成员,在子类中全部都是保护的成员。
   4.私有继承是将所有不是私有成员的成员继承为私有成员。父类中的公有成员与保护成员都被子类继承为私有成员。


   在一个类中,若是不想让自己的对象直接访问自己的成员,就可以定义为私有的,那如果想让继承的子类访问,我们就应该将这个成员定义为保护成员,保护成员对外是与私有一样的,都不可以被对象直接访问。但是在继承中,保护的成员可以让子类访问到。


三. 类的赋值问题

#include <iostream>
using namespace std;
class Person
{
public:
    Person(const string str)
    {
        _name = str;
    }
        void display()
        {
            cout<<_name<<endl;
        }
private:
        string _name;
};
class Student:public Person
{
public:
    Student(const string str,int num)
        :Person(str)
         ,_num(num)
    {}
    void show()
    {
        cout<<_num<<endl;
    }
private:
    int _num;
};
int main()
{
      Person p("peter");
      Student s("tom",10);
      s.show();
      p = s;
      p.display();
      return 0;
}

运行结果
p是用“peter”初始化的, s是用tom初始化的,经过赋值,将s的值赋给p,p的值就变为了tom。
   从这个例子可以看出来,子类是可以赋值给父类的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值