早教吧作业答案频道 -->其他-->
分析构造函数和析构函数调用次序(1)类A是类B的基类,类B是类D的基类,类C是类B的对象成员,若定义类D的对象,分析各类的构造函数和析构函数的调用次序。(2)对于(1)的题,假设C类也从
题目详情
分析构造函数和析构函数调用次序
(1)类A是类B的基类,类B是类D的基类,类C是类B的对象成员,若定义类D的对象,分析各类的构造函数和析构函数的调用次序。
(2)对于(1)的题,假设C类也从类A派生,即类A同为B和C的基类,其余题意同上,分析定义类D的对象是,各类的构造函数和析构函数的调用次序。
(3)对于(2)题 ,假设类B和类C都虚拟继承于类A,分析定义类D的对象是,各类的构造函数和析构函数的调用次序。
(1)类A是类B的基类,类B是类D的基类,类C是类B的对象成员,若定义类D的对象,分析各类的构造函数和析构函数的调用次序。
(2)对于(1)的题,假设C类也从类A派生,即类A同为B和C的基类,其余题意同上,分析定义类D的对象是,各类的构造函数和析构函数的调用次序。
(3)对于(2)题 ,假设类B和类C都虚拟继承于类A,分析定义类D的对象是,各类的构造函数和析构函数的调用次序。
▼优质解答
答案和解析
(1)
#include
using namespace std;
class A
{
public:
A()
{
cout <}
~A()
{
cout <}
};
class C
{
public:
C()
{
cout <}
~C()
{
cout <}
};
class B:public A
{
public:
C c;
B()
{
cout <}
~B()
{
cout <}
};
class D: public B
{
public:
D(){
cout <}
~D(){
cout <}
};
int main()
{
D d;
return 0;
}
输出:
constructing A
constructing C
constructing B
constructing D
Destructing D
Destructing B
Destructing C
Destructing A
(2)
#include
using namespace std;
class A
{
public:
A()
{
cout <}
~A()
{
cout <}
};
class C:public A
{
public:
C()
{
cout <}
~C()
{
cout <}
};
class B:public A
{
public:
C c;
B()
{
cout <}
~B()
{
cout <}
};
class D: public B
{
public:
D(){
cout <}
~D(){
cout <}
};
输出:
constructing A
constructing A
constructing C
constructing B
constructing D
Destructing D
Destructing B
Destructing C
Destructing A
Destructing A
(3)
#include
using namespace std;
class A
{
public:
A()
{
cout <}
~A()
{
cout <}
};
class C:virtual public A
{
public:
C()
{
cout <}
~C()
{
cout <}
};
class B:virtual public A
{
public:
C c;
B()
{
cout <}
~B()
{
cout <}
};
class D: public B
{
public:
D(){
cout <}
~D(){
cout <}
};
输出:
constructing A
constructing A
constructing C
constructing B
constructing D
Destructing D
Destructing B
Destructing C
Destructing A
Destructing A
#include
using namespace std;
class A
{
public:
A()
{
cout <}
~A()
{
cout <}
};
class C
{
public:
C()
{
cout <}
~C()
{
cout <}
};
class B:public A
{
public:
C c;
B()
{
cout <}
~B()
{
cout <}
};
class D: public B
{
public:
D(){
cout <}
~D(){
cout <}
};
int main()
{
D d;
return 0;
}
输出:
constructing A
constructing C
constructing B
constructing D
Destructing D
Destructing B
Destructing C
Destructing A
(2)
#include
using namespace std;
class A
{
public:
A()
{
cout <}
~A()
{
cout <}
};
class C:public A
{
public:
C()
{
cout <}
~C()
{
cout <}
};
class B:public A
{
public:
C c;
B()
{
cout <}
~B()
{
cout <}
};
class D: public B
{
public:
D(){
cout <}
~D(){
cout <}
};
输出:
constructing A
constructing A
constructing C
constructing B
constructing D
Destructing D
Destructing B
Destructing C
Destructing A
Destructing A
(3)
#include
using namespace std;
class A
{
public:
A()
{
cout <}
~A()
{
cout <}
};
class C:virtual public A
{
public:
C()
{
cout <}
~C()
{
cout <}
};
class B:virtual public A
{
public:
C c;
B()
{
cout <}
~B()
{
cout <}
};
class D: public B
{
public:
D(){
cout <}
~D(){
cout <}
};
输出:
constructing A
constructing A
constructing C
constructing B
constructing D
Destructing D
Destructing B
Destructing C
Destructing A
Destructing A
看了 分析构造函数和析构函数调用次...的网友还看了以下:
营养学家提出“平衡膳食宝塔”从塔基到塔顶的食物种类顺序依次是()A.蔬菜水果类、肉类、乳类、谷类、 2020-04-07 …
植物进行分类物分类的依据很多,根据有无种子这一特征,将下列植物进行分类,找出与其他不同类...植物 2020-05-24 …
IP地址分类问题求解1.按照分类IP编址方案,IP地址102.168.100.1是一个:()A.A 2020-06-24 …
大熊猫、白鳍豚和扬子鳄都是我国特有的珍贵动物,它们分别属于()A.哺乳类、鱼类和爬行类B.哺乳类、 2020-06-29 …
当x-->0时,lim1/x^2=无穷还是+无穷?为什么?我也觉得是正无穷,可是同济大学高等数学第六 2020-10-31 …
求类似题,类似题!向爸爸借了500,向妈妈借了500,买了双皮鞋用了970.剩下30元,还爸爸10块 2020-11-08 …
水果类、动物类、课程类、球类、学习用品类、家庭成员类、动作类、家具类、人称代词类、物主代词类、身体部 2020-11-13 …
根据声现象帮忙写一篇“无声的世界”或类似题目的作文根据声现象,再加上你丰富的想象力,写一篇以“无声的 2020-12-13 …
现在有什么益智类,答题类,能够拓宽知识面的节目 2020-12-19 …
白鳍豚、中华鲟、扬子鳄、大鲵是属于我国保护的珍稀水生动物,它们分别属于()A.鱼类、鱼类、两栖类、两 2021-02-05 …