先有父类,再有子类,先析构子类,再析构父类
第一,子类对象在创建时会首先调用父类的构造函数
第二, 父类构造函数执行结束后,执行子类的构造函数
第三, 当父类的构造函数有参数时,需要在子类的初始化列表中显示调用
第四, 析构函数调用的先后顺序与构造函数相反
继承的概念:面向对象中的继承指类之间的父子关系, 子类拥有父类的某些状态和行为,(子类复用了父类的功能或状态)。
继承有三种:public,protect,private
1:如果父类中的成员使用public修饰,子类无条件继承。需要被外界访问的成员直接设置为public
2:如果父类中的成员使用protected修饰,子类也继承,即使父类和子类不在同一个包中。 protected成员可以在本类和子类中被访问,但不能在外界被访问,访问权限介于public和private之间。
3:如果父类和子类在同一个包中,此时子类可以继承父类中缺省修饰符的成员。
4:如果父类中的成员使用private修饰,子类打死也都继承不到。private只能在本类中访问。
5:父类的构造器,子类也不能继承,因为构造器必须和当前的类名相同。
3.c++中的访问级别与继承:
a. 继承时的访问级别设定会影响到成员的访问级别,c++中class的默认继承为private继承
b. private继承的子类拥有父类的所有成员,private继承使得父类的所有成员在子类中变成private成员
如:class test1:private test{}
c. public继承,父类成员在子类中保持原有访问权限。private继承,父类成员在子类中变成为private成员。protected继承,父类中访问权限比protected高的,保持原有权限,其余的访问权限变成protected。
d. 最常用的继承方式为,public继承。类的成员常用protected属性和public属性。
子类与父类中的同名成员变量:
a.当子类成员变量与父类成员变量同名时, 子类依然从父类继承同名成员
b. 在子类中通过作用域分别符号 :: 进行同名成员区分
c. 同名成员存储在内存中的不同位置
d. 如果在子类中不用作用域分别符号:: 区分同名成员变量,默认的成员变量是子类的成员变量