- 继承中的构造和析构
- 继承同名静态函数处理方式
- 1通过对象访问
- 2通过类名访问
- 多继承语法
- 菱形继承
当子类继承父类之后,调用子类的构造函数 也会调用父类的构造函数
继承中的构造,先构造父类再构造子类,析构顺序相反
继承中同名函数的处理 访问子类的同名成员 直接访问即可。
访问父类的同名成员 需要加作用域
eg:stu.getname();//调用子类的同名函数
eg:stu.Person::getname();//调用父类的同名函数
总结:
1子类对象可以直接访问到子类中的同名成员
2子类对象加作用域可以访问到父类的同名成员
3当子类与父类拥有同名的成员函数,子类就会隐藏父类中的同名函数,加作用域可以访问到父类中的同名函数。
继承中同名静态成员在子类对象上如何进行访问?
静态成员和非静态出现同名,处理方式一致
s.m_a;//访问子类的同名成员
s.Base::m_a;//访问父类的同名成员
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类称为虚基类
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)