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

Отмена создания объекта при неверных аргументах - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сдвиг элементов массива циклически на a позиций вправо http://www.cyberforum.ru/cpp-beginners/thread973502.html
Применять можно только статические одномерные массивы, циклы и if. Вроде бы всё правильно, но цикл for (j=2; j>0; j--) бесконечно крутится. Буду благодарен за указание ошибки. #include <iostream.h>; #include <stdlib.h>; int main () { int i,a,j,x;
C++ Повреждение кучи После выполнения программы выдаёт ошибку Debug Assertion Failed Помогите найти и исправить место из-за которого ошибка, я так понимаю она из-за того, что что-то не правильно делаю с динамической памятью. Программа не доделана, но сейчас она заполняет двумерный динамический массив (от 2 до 5) и считает определитель. class Kramer { public: int Size; int n; //размерность int** Matrix;... http://www.cyberforum.ru/cpp-beginners/thread973498.html
C++ алгоритм BF (наиболее подходящий)
помогите пожалуйста найти этот алгоритм. нашел только текстовое описание.
C++ реализация операции декримента
На лабах задали написать алгоритм "обращенного двоичного счета", который, на сколько я понял (не удалось уточнить гуглением), представляет из себя перебор бинарный векторов в порядке лексикографического убывания. Т. е. в с++ осуществляется операцией --. Естественно, использовать -- намного проще и быстрее. Но тогда что останется от лабы?#include <iostream> void print_v(unsigned char v) { ...
C++ Числа выводятся на консоль в виде -1.#IO http://www.cyberforum.ru/cpp-beginners/thread973467.html
Прилагаю код. При изменении точности вывода меняются лишь буквы- -1.#IND, -1.#IND0, -1. #IND00 и т. д. Что это значит, почему они не выводятся нормально? #include <cstdio> #include <cstdlib> #include <cmath> #include <conio.h> int main(){ const int q=32; double mas1;
C++ Дано действительное E>0. Найти первый член y[n], для которого выполнено y[n]-y[n-1]<E Здравствуйте! Нужно решить задачу на C++: Пусть, y=0 y=(y+1)/(y+2) k=1,2,... Дано действительное E>0. Найти первый член y, для которого выполнено y-y<E. Прошу помощи в решении! Заранее благодарю! подробнее

Показать сообщение отдельно
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
10.10.2013, 02:21     Отмена создания объекта при неверных аргументах
Цитата Сообщение от ct0r Посмотреть сообщение
С чего ты взял, что объект создан тогда, когда память выделена?)

Не по теме:

А что ты мне тыкаешь? На брудершафт пили?


Почему только я? Тут почитайте: http://www.cyberforum.ru/blogs/18334/blog103.html
3. Время жизни объекта и память, выделяемая под объект

Понятие времени жизни объекта с точки зрения нашей статьи практически полностью совпадает с общепринятыми понятиями и тем, что пишут в учебниках. Но для порядка немного об этом напишу, чтобы статья имела некую целостность. Да и начинающим будет нелишним ещё раз привести знания в порядок.

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

Время жизни автоматического объекта начинается в момент его объявления. Можно считать, что начиная с момента исполнения начала процедуры или лексического блока память под объект выделена. Я не буду заострять внимания на том, каким образом компилятор обеспечивает выделение памяти, важно лишь то, что начиная с этого момента к этой памяти можно обращаться на законных основаниях и эта память закреплена за этим объектом. Время жизни автоматического объекта заканчивается при выходе управления программы из процедуры или лексического блока, в котором определён объект. В этот момент можно считать, что память освобождается. Здесь опять-таки хочется упомянуть, что реально память не освобождается и к ней можно обратиться, но компилятор уже не гарантирует, что в этой памяти сохранится значение переменной, т.к. компилятор или система с этого момента имеют право использовать эту память по своему усмотрению.
4. Конструкторы и деструкторы

Прежде всего хочется указать на одну из самых распространённых ошибок начинающих: они считают, что конструктор выделяет память для объекта (создаёт объект), а деструктор - освобождает память (удаляет объект). Это неверно! Процесс выделения памяти для объекта описан в предыдущей главе. А конструктор только инициализирует объект (т.е. задаёт объекту некоторое начальное значение). Очень важно это понимать. Непонимание обычно растёт из того, что эти два этапа с точки зрения языка обычно выглядят в виде одного оператора. Компилятор обеспечивает механизм, при котором в процессе создания объекта выделяется память под объект и вызывается метод-конструктор. Но эти две вещи не обязательно выполняются подряд одна за другой. Аналогично в процессе удаления объект вызывается метод-деструктор и затем происходит высвобождение памяти.
 
Текущее время: 07:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru