Вызов конструктора без создания объекта
Что именно происходит в коде ниже.
#include<iostream.h>
class Demo
{
public :
Demo()
{
cout<<"\nIn Demo const";
}
~Demo()
{
cout<<"\nin demo dest";
}
};
void main() {
Demo();
}
Demo()
просто вызывает конструктор и деструктор. Создается ли объект в этом процессе? И, таким образом, выделяется память?
Ответы
Ответ 1
Вы явно не вызываете конструктор, вместо этого этот код создает временный неназванный объект с типом Demo
, который уничтожается сразу после ;
.
Да, память выделяется (автоматически, в стеке) для этого временного объекта, и она освобождается (снова автоматически) после ;
. Между тем, конструктор и деструктор вызываются, как и ожидалось.
Ответ 2
Да, память выделена, но в стеке, а Demo()
создает временный объект, который автоматически разрушается.