2

私はそのようなコードを持っています:

#include <iostream>

using namespace std;

class X
{
    int a;
public:
    X()
    {
        cout<<"X constructor was called"<<endl;
    }
    X(int n)
    {
        cout<<"X(int) constructor was called"<<endl;
    }
    ~X(){cout<<"X dectructor was called"<<endl;}
};
int main()
{
    X x(3);

    system("PAUSE");

    return 0;
}

このコードの実行結果は次のとおりです。X(int) コンストラクターが呼び出されました。しかし、デストラクタ メッセージが出力されていないのはなぜですか?

私が理解しているように、コンストラクター X(int) を呼び出してオブジェクト x を作成し、プログラムの最後にこのオブジェクトを削除する必要がありますが、削除しませんでした。

4

4 に答える 4

1

これを試して :

int main()
{
    {
       X x(3);
    } // Your x object is being destroyed here

    system("PAUSE");

    return 0;
}

X のローカル スコープが作成されるため、X が破棄されていることがわかります。

于 2013-05-16T15:04:16.403 に答える