[英]Don't understand the output of this program
這是來自即將舉行的考試的過去論文的程序。 我已經嘗試稍微編輯該文件以查看會發生什么,但我仍然對它為什么按此特定順序打印感到困惑。
#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;
}
這是輸出
HAMMER TOOL TAPE HAMMER WRENCH TAPE SHEVEL SWEEPER ~SWEEPER ~SHOVEL ~TAPE ~WRENCH ~HAMMER ~TAPE ~TOOL ~HAMMER
為什么 TAPE 沒有出現在 TOOL 之前? 同樣沒有出現在相反的第二位?
編輯:似乎除了這兩個之外,它完全按照從上到下的順序出現,然后又反過來
這是施工順序:
在銷毀過程中,對象以相反的順序銷毀。 但在這種情況下,析構函數體在銷毀成員之前執行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.