Страницы

Поиск по вопросам

вторник, 26 марта 2019 г.

Не вызывается деструктор у класса

Доброго времени суток. Имеется класс, который изменяет кодировку консоли. Код:
#include "stdafx.h" #include #include
class edit_locale { int old_cin; int old_cout; public: edit_locale(int); ~edit_locale(); };
int main() { edit_locale(1251); std::cout << "Иван" << std::endl;
return 0; }
edit_locale::edit_locale(int cp) { this->old_cin = GetConsoleCP(); this->old_cout = GetConsoleOutputCP(); SetConsoleCP(cp); SetConsoleOutputCP(cp); }
edit_locale::~edit_locale() { SetConsoleCP(this->old_cin); SetConsoleOutputCP(this->old_cout); }
Проблема заключается в следующем: функция SetConsole срабатывает только в конструкторе, в main - функции изменений не происходит. И деструктор не вызывается. С чем это может быть связано? Спасибо.


Ответ

Проблема в строчке
edit_locale(1251);
Вы создаёте временный объект, который тут же, в этой же строчке уничтожается.
Пишите так:
edit_locale l(1251);

Комментариев нет:

Отправить комментарий