1,虚基类,其构造函数总是在最后一个层次最先并且真正被执行。
实例代码:
#include <iostream>
using namespace std;
class A
{
public:
A(const string& s)
{
cout << "A " << s << endl;
}
virtual ~A() {}
};
class B
{
public:
B(const string& s)
{
cout << "B " << s << endl;
}
virtual ~B() {}
};
class C
{
public:
C(const string& s)
{
cout << "C " << s << endl;
}
virtual ~C() {}
};
class D
{
public:
D(const string& s)
{
cout << "D " << s << endl;
}
virtual ~D() {}
};
class E : public A, virtual public B, virtual public C
{
public:
E(const string& s) : A("from E"), B("from E"), C("from E")
{
cout << "E " << s << endl;
}
};
class F : virtual public B, virtual public C, public D
{
public:
F(const string& s) : B("from F"), C("from F"), D("from F")
{
cout << "F " << s << endl;
}
};
class G : public E, public F
{
public:
G(const string& s) : B("from G"), C("from G"), E("from G"), F("from G")
{
cout << "G " << s << endl;
}
};
int main()
{
//虚基类的构造函数最先执行
G g("from main");
}
输出:
引用
B from G
C from G
A from E
E from G
D from F
F from G
G from main
总结:虚基类构造函数最先被执行,然后按照从左到右,从上到下的顺序依次执行每一个构造函数。
分享到:
相关推荐
c++多重继承与虚基类的ppt 讲细致 易懂
且构造函数和析构函数的调用顺序和单继承是一样的,先调用基类构造函数,再调用对象成员的构造函数,最后调用派生类的构造函数。那么处于同一层次的各个基类构造函数的调用顺序是取决于声明派生类时所指定的各个基类...
C++实例关于多继承和虚基类PPT多继承和虚基类PPT
虚基类的简单应用举例,分别把不同类的声明放在不同的头文件中,把不同类的实现放在不同的源文件中,把类的声明和成员函数的定义进行分离,初步实现了C++在实际工作中的编程思想,信息屏蔽。
定义一个Person 类,结构如下图,为该类添加输入输出流运算符重载。Person 类以Public方式派生出一个Teacher类,数据成员包括:int gh(工号);char* title(职称),为该类添加输入输出流运算符重载,完成有参、无参、...
同名变量和函数问题,最后介绍了多重继承与虚基类。本文第二部分重点介绍了虚函数与多态性的问题,因此学习虚函 数的基础是继承,因此在学习虚函数前应学好继承。本文详细易懂,内容全面,是学习C++的不错的资料。
#include #include using namespace std; class Teacher{ public: Teacher(string nam,int a,char s,string tit,string ad,string t):name(nam),age(a),sex(s),title(tit),addr(ad),tel(t){} void display();...
分别声明Teacher(教师)类和Cadre(干部)类,采用多重继承方式由这两个类派生出新类Teacher_Cadre(教师兼干部)。要求:①在两个基类中都包含一部分相同名字的数据成员name(姓名),age(年龄)和成员函数...
子对象重叠,虚基类,开销,向上映射,避免MI,修复接口
类的多重继承演示"<<endl; CDateTimeType dt 1 1 2008 11 12 12 ; 直接使用DateTimeType构造函数设置日期时间 cout<<"调用CDateTimeType类构造函数设定的初始日期 时间为:"<<...
要求:1、虚函数 多态 多态表现为 基类 基类指针和继承间的关系 2、带有多对象成员。定义 3、体现继承 虚拟继承(要通过至少三层 父类父类子类) 虚函数 (3层 纵向关系) 水平方向上:体现出继承顺序 先虚拟继承 ...
在多重继承中,可以构建一个继承关系图,其中相同的基类是多个派生类的一部分。下图显示了此类关系图。 单个基类的多个实例 在该图中,显示了 CollectibleString 和 CollectibleSortable 的组件的图形化表示形式。...
本文以实例形式较为全面的讲述了C++的多重继承与虚继承,是大家深入学习C++面向对象程序设计所必须要掌握的知识点,具体内容如下: 一、多重继承 我们知道,在单继承中,派生类的对象中包含了基类部分 和 派生类...
1. 多重继承即一个类继承了多个基类的属性。 2. 多重继承下派生类的构造函数必须同时负责所有基类构造函数的调用, 3. 派生类构造函数的参数个数,必须满足多个基类初始化的需要。 4. 在多重继承下,当建立派生类...
VC 实现C 类的多重继承,cout(1,1,2008,11,12,12);//直接使用DateTimeType构造函数设置日期时间 cout();//显示时间日期 dt.SetDate(8,8,2008);//调用基类的成员函数修改日期 dt.SetTime(20,8,8);//调用基类...
多重继承是从多于一个直接基类派生类的能力,多重继承的派生类继承其父类的属性。 class ZooAnimal{ }; class Bear : public ZooAnimal{ }; class Endangered{ }; class Panda : public ...
1* 类如何布局? 2* 成员变量如何访问? 3* 成员函数如何访问? 4* 所谓的“调整块”(adjuster thunk)是... * 单继承、多重继承、虚继承 * 虚函数调用 * 强制转换到基类,或者强制转换到虚基类 * 异常处理
学会使用继承、多重继承,注意基类使用虚基类
C++多态通过继承和动态绑定实现。继承是一种代码或者功能的传承共享,从语言的角度它是外在的、形式上的,极易理解。而动态绑定则是从语言的底层实现保证了多态的发生——在运行期根据基类指针或者引用指向的真实...
多重继承就是派生类继承多个基类,继承方法和一个继承是一样的。 一个继承请看我 —> “C++ 继承和派生” 文章,会有详细介绍。 链接: C++ 继承和派生 在这里我主要讲多重继承的细节。 第一 继承方法: 例如已声明了...