Я использую компилятор Dev C++. У меня есть этот код:Неверный вывод
#include <iostream>
using std::cout;
class Test
{
public:
Test();
~Test();
};
Test::Test()
{
cout << "Constructor is executed\n";
}
Test::~Test()
{
cout << "Destructor is executed\n";
}
int main()
{
new Test();
return 0;
}
Выходной
Constructor is executed
В этом коде почему деструктор не вызывается автоматически.
Но когда я пытаюсь этот код:
#include <iostream>
using std::cout;
class Test
{
public:
Test();
~Test();
};
Test::Test()
{
cout << "Constructor is executed\n";
}
Test::~Test()
{
cout << "Destructor is executed\n";
}
int main()
{
delete new Test();
return 0;
}
Выход
Constructor is executed
Destructor is executed
Что является причиной разницы в этих результатах?
Его 'C++' не 'java'. В 'C++' вам нужно самостоятельно управлять памятью. –