这是一个程序,从过去的论文在即将到来的考试。我试着编辑了一些文件,看看会发生什么,但我仍然不明白为什么它会按照特定的顺序打印。
#include <iostream>
using namespace std;
class HAMMER
{
public:
HAMMER() {cout << " HAMMER";}
virtual ~HAMMER() { cout << " ~HAMMER "; }
};
class TAPE
{
public:
TAPE(){cout << " TAPE "; }
virtual ~TAPE() { cout << " ~TAPE"; }
};
class TOOL
{
public:
TOOL(){cout << " TOOL "; }
virtual ~TOOL() { cout << " ~TOOL"; }
protected:
HAMMER hammer;
};
class WRENCH
{
public:
WRENCH(){cout << " WRENCH "; }
virtual ~WRENCH() { cout << " ~WRENCH"; }
protected:
HAMMER hammer;
};
class SHOVEL
{
public:
SHOVEL(){cout << " SHOVEL "; }
virtual ~SHOVEL() { cout << " ~SHOVEL"; }
protected:
TAPE dog;
};
class SWEEPER: public TOOL
{
public:
SWEEPER(){cout << " SWEEPER "; };
virtual ~SWEEPER(){ cout << " ~SWEEPER " ; };
protected:
TAPE dog;
WRENCH wrench;
SHOVEL shovel;
};
int main()
{
SWEEPER b;
}这是输出
锤子工具磁带锤式扳手铲扫机~铲运机~铲子~铲子~扳手~锤子~工具锤子
为什么磁带没有出现在工具前?同样的,在相反的情况下也不会出现第二位?
编辑:它似乎不是这两个,它似乎完全按照顺序从上到下,然后再反过来。
发布于 2020-01-16 07:55:12
这是建筑的顺序:
HAMMER
- Shovel constructor begins
- Shovel has hammer member -> prints HAMMER
- Shovel constructor finishes -> prints SHOVEL
在销毁过程中,物体以相反的顺序被销毁。但在这种情况下,在销毁成员之前执行析构体。
https://stackoverflow.com/questions/59764992
复制相似问题