Форум программистов, компьютерный форум CyberForum.ru

Конструкторы и деструкторы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Функция round(), округление числа до 4-х знаков после запятой http://www.cyberforum.ru/cpp-beginners/thread542466.html
Вот наткнулся на проблемку как округлить число до 4 знаков после запятой? Подскажите что делать?
C++ Составить программу, которая позволяет ввести с клавиатуры шестнадцатеричное число и записать его в переменную a, выполнить требуемую проверку. Составить программу, которая позволяет ввести с клавиатуры шестнадцатеричное число и записать его в переменную a типа unsigned. Выполнить необходимые проверки для данного числа: Проверить, установлен ли 11 или 15 бит в “1”. Включить 1, 3, 5, 6, 8, 10, 11, 12 и 13 биты, не изменяя остальных, записав результат в переменную b. Помогите пожалуйста разобраться с этими масками. http://www.cyberforum.ru/cpp-beginners/thread542462.html
C++ Очень стремная задача
На плоскости задано N точек, которые пронумерованы слева на право (а при равных абсциссах снизу вверх). Нужно создать программу, которая строит многоугольник, который является выпуклой их оболочкой, не более чем за C*N действий.
Прибавить к элементам каждого столбца первой матрицы произведения элементов соответствующих строк второй C++
Привет ВСЕМ!!! Помогите пожалуйста с одной задачкой!!!) Пусть даны две вещественные матрицы порядка N. Получить новую матрицу следующим способом: прибавлением к элементам каждого столбца первой матрицы произведения элементов соответствующих строк второй матрицы. Заранее ВСЕМ благодарен!!!
C++ Не передается массив в функцию http://www.cyberforum.ru/cpp-beginners/thread542422.html
Всем привет,не могу передать массив в функцию,после передачи массив получается пустой ILuaObject *args; args =(ILuaObject *)g_Lua->GetReference(1); args =(ILuaObject *)g_Lua->GetString(2); g_Lua->Msg("argsize:"); g_Lua->Msg(itos(sizeof(args) / sizeof(args))); g_Lua->Msg("\n"); InvokeMetaFunc("Player","Kick",sizeof(args) / sizeof(args),false,args);
C++ Ошибка при вызове деструктора Программа компилиться нормально,но после выполнения system("pause"); выползает непонятное окно,и указывает на ошибку в деструкторе.В чем может быть проблема? Заранее спасибо. #include <iostream.h> /////////////////////////////////////////////////////////// class Array //моделирует обычный массив C++ { private: int* ptr; //указатель на содержимое... подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4945 / 3021 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
08.04.2012, 17:07     Конструкторы и деструкторы
glukobug, ошибка есть в любом случае. Если класс реализует захват ресурсов, он должен предоставлять самописный оператор присваивания и конструктор копии. У вас деструктор вызывается три раза (а дебагу как раз и надо верить, там не производятся такие жёсткие оптимизации, как в релизе), потому что при возврате по значению из оператора + происходит копирование, а поскольку у вас нет конструктора копии (который реализовывал бы верное копирование захваченных ресурсов), то при копировании копируется указатель. При удалении копии выделенная память удаляется, а при удалении оригинала происходит попытка удалить уже удалённую память. По ссылке выше код не падает, потому что компилятор там реализует стандарт C++0x, который разрешает при возврате по значению вызывать не конструктор копии, а перемещающий конструктор (который предоставляется по умолчанию), а ему как раз и требуется перемещать ресурсы из удаляемого объекта в создаваемый (что в вашем случае совпадает с копированием указателя), отсюда программа и не падает.
 
Текущее время: 03:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru