欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-01-16 09:33:52
...
一 不同的继承方式会改变继承成员的访问属性

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、析构函数调用的先后顺序与构造函数相反

以上就是C++复习要点总结之八——继承一的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关标签: C++,继承