10

以下のコードで正確に何が起こっているのか。

#include<iostream.h>

class Demo
{
    public :

    Demo()
    {
        cout<<"\nIn Demo const";
    }
    ~Demo()
    {
        cout<<"\nin demo dest";
    }
};

void main() {
    Demo();
}

Demo()コンストラクタとデストラクタを呼び出すだけです。このプロセスでオブジェクトが作成されていますか? したがって、メモリが割り当てられていますか?

4

2 に答える 2

20

コンストラクターを明示的に呼び出しているわけではありません。代わりに、このコードは type の名前のない一時的なオブジェクトを作成し、 のDemo直後に破棄され;ます。

はい、メモリはこの一時オブジェクトに (自動的に、スタック上で) 割り当てられ、後で (再び自動的に) 解放されます;。一方、コンストラクタとデストラクタは、期待どおりに呼び出されます。

于 2013-09-19T10:19:36.147 に答える
0

はい、メモリは割り当てられていますが、スタック上にあり、Demo()自動的に破棄される一時オブジェクトを作成しています。

于 2013-09-19T10:21:31.427 に答える