-
ChildLabourer(string name, int age):Worker(name),Children(age)
实例化子类对象时,需要先实例化父类的对象,因为父类没有默认构造函数,所以必须得给父类构造函数传参,初始化列表是早于构造函数运行的,早于父类子类的构造函数。如果父类有默认构造函数的话,就不需要传参了。如果要传参,只能先实例化父类对象,也就是在初始化列表中一步完成实例化,后面也就用再实例化了。
查看全部 -
"不同继承方式的影响主要体现在:
1、派生类成员对基类成员的访问控制。
2、派生类对象对基类成员的访问控制。
三种继承方式:
1、公有继承(public)
① 基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可访问。
② 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能访问基类的private成员。
③ 通过派生类的对象只能访问基类的public成员。
2、私有继承(private)
① 基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可访问。
② 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能访问基类的private成员。
③ 通过派生类的对象不能访问基类中的任何成员。
3、保护继承(protected)
① 基类的public和protected成员都以protected身份出现在派生类中,但基类的private成员不可访问。
② 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能访问基类的private成员。
③ 通过派生类的对象不能访问基类中的任何成员。
protected成员的特点与作用:
对建立其所在类对象的模块来说(水平访问时),它与private成员性质相同。对于其派上类来说(垂直访问时),它与public成员的性质相同。既实现了数据隐藏,又方便继承,实现了代码重用。
"
讲的太好了!
查看全部 -
“重定义就是你有一个父类A, B类和C类同时继承父类A,A类没有生命?#IFNDEF DEFINE #ENDIF,那么就会在生成B类和C类的时候重定义了。”
“重定义就是已经定义了又再次进行定义,父类中定义了类的一些操作并且这些操作调用的顺序进行了约定,但是子类继承后对操作的实现需要进行了更改,对其调用顺序不需要关心?,这个时候就使用重定义或者覆盖的方式。”
通过宏定义解决重定义!(菱形继承中重定义必然会出现)
在公共被继承的类中加入宏定义:
#ifndef 文件全称 //为了把此文件与其他文件区分
#define 文件全称
。。。。
#endif
查看全部 -
父子关系 成员同名 隐藏
查看全部 -
保护与私有继承:
class A:protected B
A将B中的所有成员函数都继承为protected成员。
class A:private B
A将B中的所有成员函数都继承为private成员。
查看全部 -
公有继承
格式
class A:public B
{}
继承关系
查看全部 -
private继承方式
查看全部 -
保护继承的方式
查看全部 -
公有继承下的特性
查看全部 -
jccccc
查看全部 -
c=====
查看全部 -
虚继承的情况下菱形继承作为最顶层的父类并没有进行参数的传递,也就是参数只使用了顶层父类的默认参数而无法从子类中获得传入的参数
查看全部 -
类的继承关系
查看全部 -
使用虚继承时虽然不会重复调用最顶层父类的构造函数和析构函数,但参数只能使用最顶层父类默认值,而无法从子类中获得传入的值查看全部
-
用宏定义解决重定义问题查看全部
举报