Вызов конструктора без создания объекта

Что именно происходит в коде ниже.

#include<iostream.h>

class Demo
{
    public :

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

void main() {
    Demo();
}

Demo() просто вызывает конструктор и деструктор. Создается ли объект в этом процессе? И, таким образом, выделяется память?

Ответ 1

Вы явно не вызываете конструктор, вместо этого этот код создает временный неназванный объект с типом Demo, который уничтожается сразу после ;.

Да, память выделяется (автоматически, в стеке) для этого временного объекта, и она освобождается (снова автоматически) после ;. Между тем, конструктор и деструктор вызываются, как и ожидалось.

Ответ 2

Да, память выделена, но в стеке, а Demo() создает временный объект, который автоматически разрушается.