C++ 类的继承机制梳理

类的继承

什么是继承?
  • 继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称 派生类。继承呈现了面向对象程序设计的层次结构, 体现了由简单到复杂的认知过程
为什么要有继承?
  • 纠其根本,最主要的目的就是要提高代码的复用率,更加容易切合大型的项目工程,但是为了提高复用率让编译器过多的参与到代码之中,代码的理解上很容易与出现偏差,看到的不一定是真实的
继承的操作有那些
1.继承方式
class Deriver : public/private/protected Base  
//Deriver继承Base   public 三种继承模式
{
.....

};  
  • public继承方式下
    基类public 和protected 成员分别作为派生类的public、protected成员,派生类的其他成员可以直接访问他们。其他外部使用者只能通过派生类的对象访问访问继承来的public成员,而无论是派生类的成员还是派生类的对象无法访问基类的private成员
  • protected继承方式下
    基类的public 和protected 成员被继承后作为派生类的private成员,派生类的其他成员可以直接访问他们,在外部通过派生类的对象无法访问他们,而无论是派生类的成员还是派生类的对象无法访问从基类继承来的private成员
  • private继承方式下
    基类的public 和protected 成员被继承后作为派生类的private成员,派生类的其他成员可以直接访问他们,在外部通过派生类的对象无法访问他们,而无论是派生类的成员还是派生类的对象无法访问从基类继承来的private成员
2.派生类大小
  • 基类不存在虚函数、派生类中也没有虚函数时
    继承类的大小 = 基类成员变量大小+派生类自己的成员变量大小(内存对齐)
  • 基类中存在虚函数、派生类中存在虚函数时
    单个继承:
    派生类的大小 = 基类成员大小+虚表指针大小+派生类成员大小 (内存对齐)
    多个继承:
3.派生类的赋值兼容
  • public 继承方式下
    派生类的可以赋值给基类的指针、引用
    基类的赋值给派生类会出现访问越界等错误
4.派生类的底层存储
  • 赋值兼容的根本原因在于派生类的内存存储实现
    在不含有虚函数的基类继承的派生类中,在内存中存储的方式为 继承类的变量在上、派生类的变量在下,没有添加修饰的情况下,存储在栈空间。
5.继承的作用域
  • 当派生类中变量、函数与基类出现重复的(不考虑虚函数)当在基类的对象中调用该重名变量、函数时,将屏蔽基类的变量、函数,除非采用 域名+ 变量\函数名的方式才可以调用(当然为共有继承时)
注意点
1.友元关系不能被继承
2.static变量被继承类共享
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值