您的位置:首页 > 编程语言 > C语言/C++

C++复习要点总结之八——继承一

2016-03-29 19:40 337 查看
一 不同的继承方式会改变继承成员的访问属性

public 修饰的成员变量、方法 在类的内部和外部都可以使用。

protected 修饰的成员变量、方法在类的内部使用,在继承的子类中使用,类的外部不能使用。(是为了在家族中使用,为了得到继承!)

private 修饰的成员变量、方法 只能在类的内部使用,不能在类的外部使用

1)C++中的继承方式会影响子类的对外访问属性

public继承:父类成员在子类中保持原有访问级别

private继承:父类成员在子类中变为private成员

protected继承:父类中public成员会变成protected

父类中protected成员仍然为protected

父类中private成员仍然为private

2)private成员在子类中依然存在,但是却无法访问到。不论种方式继承基类,派生类都不能直接使用基类的私有成员。

3)C++中子类对外访问属性表

父类成员访问级别









public(继承方式)

proteced(继承方式)

private(继承方式)

public

public

proteced

private

proteced

proteced

proteced

private

private

private

private

Private

三看原则:

C++中的继承方式(public、private、protected)会影响子类的对外访问属性

判断某一句话,能否被访问

1)看调用语句,这句话写在子类的内部、外部

2)看子类如何从父类继承(public、private、protected)

3)看父类中的访问级别(public、private、protected)

派生类类成员访问级别设置的原则

思考:如何恰当的使用public,protected和private为成员声明访问级别?

1、需要被外界访问的成员直接设置为public

2、只能在当前类中访问的成员设置为private

3、只能在当前类和子类中访问的成员设置为protected,protected成员的访问权限介于public和private之间。

二 类型兼容性原则

类型兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来替代。通过公有继承,派生类得到了基类中除构造函数、析构函数之外的所有成员。这样,公有派生类实际就具备了基类的所有功能,凡是基类能解决的问题,公有派生类都可以解决。类型兼容规则中所指的替代包括以下情况:

子类对象可以当作父类对象使用

子类对象可以直接赋值给父类对象

子类对象可以直接初始化父类对象

父类指针可以直接指向子类对象

父类引用可以直接引用子类对象

在替代之后,派生类对象就可以作为基类的对象使用,但是只能使用从基类继承的成员。

类型兼容规则是多态性的重要基础之一。

第一层含义:
1-1 基类指针(引用)指向子类对象

Parent *p = Null;

p = &c1;

p->printp();

1-2 指针做函数参数

howToPrint(&p1);

howToprint(&c1);

1-3引用做函数参数

howToprint2(p1);

howToprint2(c1);

第二层含义

可以让父类对象,初始化子类对象

Parent p3 = c1;

三 继承中的对象模型

问题:如何初始化父类成员?父类与子类的构造函数有什么关系

在子类对象构造时,需要调用父类构造函数对其继承得来的成员进行初始化

在子类对象析构时,需要调用父类析构函数对其继承得来的成员进行清理

继承中的构造析构调用原则(初始化的时候从上而下,先有爹再有儿子)

1、子类对象在创建时会首先调用父类的构造函数

2、父类构造函数执行结束后,执行子类的构造函数

3、当父类的构造函数有参数时,需要在子类的初始化列表中显示调用

4、析构函数调用的先后顺序与构造函数相反
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: