C++类的继承和派生

C++ 类的继承

面向对象程序设计的三大特性之一:继承

人类可以封装成一个类,学生是一个类。由于学生也是人类,所以可以继承人类这个类中的方法和属性。

类man称为父类、基类或者超类

类Student称为派生类、子类

UML图:

在这里插入图片描述

父类中的所有非静态成员都会被子类继承

class Test1
{
	int a;
public:
	int b;
protected:
	int c;
}

class Test2 : public Test1
{
public:
    int e;
}

sizeof(Test2) = 16      //子类继承了父类的所有非静态成员

类成员的访问控制和继承

不写继承方式默认为私有继承

√——可以访问
×——不可以访问

类不想被访问的私有数据声明为private

访问的类publicprivateprotected
同一个类
派生类×
外部的类××

派生类定义的成员方法以及参数列表和父类中的定义的方法一致,派生类的定义的方法会覆盖父类中方法。

派生类继承基类所有方法,例外的情况:

  • 基类的构造函数、析构函数、拷贝构造函数
  • 基类重载运算符
  • 基类友元函数

继承类型

一般都是用公有继承,很少使用私有和保护继承

类的成员访问控制权可以有以上三种,故继承也就有三种:

  • 公有继承【public】

    • 基类公有成员是派生类公有成员

    • 基类的保护成员是派生类的保护成员

    • 基类的私有成员是派生类的私有成员,派生类不能直接访问,可通过基类公有、保护的方法进行访问。

      class man
      {
      	...
      };
      class student : public man
      {
      	...
      }
      
  • 保护继承【protected】

    基类公有成员和保护成员都成为派生类的保护成员,只能通过派生类成员函数访问。
    私有成员无法直接访问。

    class man
    {
    	...
    };
    class student : protected man
    {
    	...
    }
    
  • 私有继承【private】

    基类公有、保护成员都成为派生类私有成员,只能通过成员函数访问。基类的私有成员派生类无法直接访问。

    class man
    {
    	...
    };
    class student : private man
    {
    	...
    }
    

    多继承

    派生类有多个父类
    

    语法格式:

    class [派生类] : [继承方式] [基类1],[继承方式2] [基类]...
    {
    	[派生类成员]
    	...
    }
    

语法格式:

class [派生类] : [继承方式] [基类1],[继承方式2] [基类]...
{
	[派生类成员]
	...
}

继承后同名成员的处理方式:

  • 子类对象可以直接访问子类同名成员
  • 子类对象作用域可以访问到父类同名成员
  • 子类和父类拥有同名成员函数,父类中同名成员函数会被隐藏,加作用于可以访问到父类中的同名函数。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欲盖弥彰1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值