继承和多继承的知识点

继承和多继承的知识点,第1张

文章目录
  • 继承中的构造和析构
  • 继承同名静态函数处理方式
    • 1通过对象访问
    • 2通过类名访问
  • 多继承语法
  • 菱形继承

继承中的构造和析构

当子类继承父类之后,调用子类的构造函数 也会调用父类的构造函数
继承中的构造,先构造父类再构造子类,析构顺序相反

继承中同名函数的处理 访问子类的同名成员 直接访问即可。
访问父类的同名成员 需要加作用域

eg:stu.getname();//调用子类的同名函数
eg:stu.Person::getname();//调用父类的同名函数

总结:
1子类对象可以直接访问到子类中的同名成员
2子类对象加作用域可以访问到父类的同名成员
3当子类与父类拥有同名的成员函数,子类就会隐藏父类中的同名函数,加作用域可以访问到父类中的同名函数。

继承同名静态函数处理方式

继承中同名静态成员在子类对象上如何进行访问?
静态成员和非静态出现同名,处理方式一致

1通过对象访问

s.m_a;//访问子类的同名成员
s.Base::m_a;//访问父类的同名成员

2通过类名访问

son::m_a;//访问子类的同名成员
//第一个::代表通过类名方式进行访问,第二个::代表访问父类作用域下
son::Base::m_a;//访问父类的同名成员

多继承语法

c++允许一个类继承多个类
多继承可能会引发父类中有同名成员出现,需要加作用域区分
注意:c++实际开发中 不建议多继承
class son :public base1,public base2
s.Base1::m_a;//父类1中的成员
s.Base2::m_a;//父类2中的成员

菱形继承

两个派生类继承同一个类
又有一个类 同时继承两个派生类
问题:继承两个派生类的类会因为继承了两份一样的数据 而产生二义性
解决:
利用虚继承 解决菱形继承问题
继承之前 加上关键字 virtual 变为虚继承
animal类称为虚基类

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1498977.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-25
下一篇 2022-06-25

发表评论

登录后才能评论

评论列表(0条)

保存