-
1,一个子类的对象可以作为参数传入函数当中,无论继承的层级有多少层,那么他们只要保持着直接或者间接的关系,那么子类都可以与自己的直接父类或者间接父类称之为is a的关系,并且能够通过父类的指针对子类或者间接子类进行相应的操作。查看全部
-
(2),多继承时,一定要写继承方式,共有继承写public,不写则默认为继承方式为private查看全部
-
(1),士兵是人类,步兵是士兵,同时步兵也是人类,这就是我们说的is a(多重继承)的关系查看全部
-
菱形继承查看全部
-
用初始化列表分别将从migrantworker构造函数传入的name和code传递给父类Farmer、Worker的构造函数中去。查看全部
-
(6)如何避免内存泄露,什么时候使用虚析构函数,当使用父类的指针去指向堆中的子类的对象,并且还想使用父类的指针销毁这段内存的时候,这就需要虚析构函数了,他的关键字是virtual,virtual~Soldier()这个关键字是可以继承下去的查看全部
-
(5)当我们用父类的指针去指向子类的一个对象的时候,子类的对象会实例化,实例化时先调用父类的构造函数,在调用子类的构造函数。但销毁时只是执行了父类的构造函数,没有执行子类的构造函数,也就是说内存出现了泄露查看全部
-
(4)我们用person的对象或者是指针只能调用person自有的数据成员和成员函数,无法调用它子类的数据成员和成员函数。查看全部
-
3,用指针效果是一样的,无论是用对象赋值的方式还是用指针指向的方式,如果用父类去指向或者是接收子类对象的值,那么打印出来的都是子类对象所拥有的值。查看全部
-
(2),当soldier的对象赋值给person的对象之后呢,用p调用play打印出来的就是jams,无论是soldier初始化给p还是直接赋值给p都能把soldier下面的m_strname赋值给person下的m_strname。查看全部
-
(1),当使用soldier去实例化p这个对象的时候,soldier对象本身是要执行构造函数的,由于soldier是子类,所以在执行soldier的构造函数之前会执行person的构造函数。我们使用soldier去使用person的对象p的时候,就意味着做了截断,把soldier当中的m_strName赋值给person当中的m_strName查看全部
-
(2)如果给m_strName赋值的话,只能赋值给soldier下的m_strName,不能复制给person下的m_strName,当数据成员同名的时候只能使用自身的数据成员,也可以用特殊方法访问父类的数据成员 person::m_strName;赋值的时候这样,输出的时候也这样用。查看全部
-
(1),参数不同是否能形成隐藏?soldier要调用play只能调用soldier下的play不能调用继承来的play(),不管继承来的play()是不是与soldier下的play()参数是否相同,也就是说,他们之间无法进行重载,只能进行隐藏。查看全部
-
(2),访问从person继承下来的数据成员,其实可以避免string m_strm_Abc ,int m_Iabc,所以好的命名方式是有很大用处的。查看全部
-
(1),子类B中的ABC函数就会隐藏掉父类A中的ABC函数,当实例化B的对象的时候,该对象只能直接的访问B中的ABC,而无法访问到A中的ABC函数,实际上A类当中的成员函数的确继承到了B中,并且可以通过特殊的方式访问到,我们就称这种现象为隐藏:(父子关系,成员同名,隐藏)。查看全部
举报
0/150
提交
取消