类的继承方式
一是派生类中非static成员函数和友元函数对基类成员的访问;
二是在派生类作用域外的对象对基类成员的访问。
派生类对象的构造与析构的顺序
构造派生类的对象时,就要对基类数据成员、派生类自身的数据成员和对象成员进行初始化。由于基类的构造函数不能被继承下来,要完成这些工作,就必须给派生类添加新的构造函数。派生类构造函数执行的一般顺序如下:(1)调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。
(2)调用对象成员的构造函数,调用顺序按照它们在类中声明的顺序。
(3)执行派生类的构造函数体中的内容。
继承中的基类成员的访问和赋值兼容性
当多个基类中定义有同名成员则派生类对这些同名成员的访问可能存在冲突和二义性这时可采用成员名限定法来这种访问不明去的问题。当在多重继承的情况下.调用不同基类中的相同成员时可能也会出现二义性问题。C++语言规定,在派生类中重新声明的成员函数具有比基类同名成员函数更小的作用域,这时可以在可能出现二义性的地方,加上类名限定,就可避免出现名字冲突问题。赋值兼容规则
赋值兼容规则是指在需要基类对象的任何地方都可以使用公有派生类的对象来替代。通过公有继承,派生类得到了基类中除构造函数、析构函数之外的所有成员。这样,公有派生类实际就具备了基类的所有功能,凡是基类能解决的问题公有派生类都可以解决。赋值兼容规则中所指的替代包括以下的情况:
(1)派生类的对象可以赋值给基类的对象
(2)派生类的对象可以初始化基类的引用。
(3)派生类对象的地址可以赋给指向基类的指针。
虚基类
当某类的部分或全部直接基类是从另一个共同基类派生而来时,在这些直接基类中从上一级共同基类继承来的成员就拥有相同的名称。在派生类对象中这些同名数据成员在内存中同时拥有多个副本,同一个函数名会有多个映射。可以将共同基类设置为虚基类,从不同的路径继承过来的同名数据成员在内存中就只有一个副本,同一个函数名也只有一个映射。因而虚基类解决了同名成员的唯一标识问题。#科技萌新成长营#
还没有评论,来说两句吧...