注:对于上图实例,注意Student有name的成员,但不能出现name因为是private,但调用setPerson(pubilc)可以,因为它有name,所以n才有的赋
实例:(public继承)
注:1.反着的
2.对象成员:就是一个数据成员,但是属于类这个类型
实例1:
实例2:
(运行时,先调用基类person构造,同时初始化student,在调用student构造,析构反)
?如果将Student和Employee里的name都定义为protected,StudenthaJob里调用
出现歧义,不知从哪条路径来
解决:成员名字限定
此时,调用StudenthasJob
——>先调用Student构造,是子类故先Person构造
——>再调用Employee构造,是子类故又Person构造
——>最后StudenthasJob构造
(理解:最大父类反复被调用!(存在多个副本),于是virtual 继承,从而只调用一次)
(理解:虚基类指最大父本,图中是Person,
如果student和employee在继承时采用virtual public,
那么只有在真的创建对象【包括person,student,employee等】时才调用Person构造
初始化列表里的!!!不算!!!,以便只调用一次)
前置:
!格外关注基类指针可指向派生类对象,但调用时调用的都是基类里的
如图,调用show时调用的是父类shape的show()