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

Проверить на выход за границы массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка очереди <char> http://www.cyberforum.ru/cpp-beginners/thread856300.html
помогите пож с сортировкой очереди queue очередь состоит из латинсколо алфавита. нужно отсортировать по возростанию и по спаданию .. типо от а до z и от z до а если можно через <algoritm> ну или...
C++ тип time_t Нужно ввести 2 переменные типа time_t с клавиатуры , потом переконвертировать их в строки и записать в файл. В процессе исполнения программы вылетает ошибка: Debug assertion failed. Expression:... http://www.cyberforum.ru/cpp-beginners/thread856297.html
C++ Символьные вычисления
Есть задача создания символьных вычислений с помощью C++. Все подобные приложения написаны на Lisp. Думал разобраться с SymbolicC++3 но документации нет вовсе и вся библиотека не компилируется а...
Матрица: определить количество строк, не содержащих ни одного нулевого элемента C++
для решения задач: 1) определить количество строк, не содержащих ни одного нулевого элемента; 2) найти максимальное из чисел, встречающихся в заданном массиве более одного раза. #include...
C++ Объявление объекта класса из DLL C++ Builder 6 http://www.cyberforum.ru/cpp-beginners/thread856274.html
Добрый день! Пишу программу которая вызывает функции из DLL с явной загрузкой. Полазил по инету, вроде все правильно делаю. Когда объявляю новый объект класса в проекте, компилятор ругается на эти 3...
C++ Моя первая консольная игра :D Всем доброго времени суток! Сегодня я хочу показать вам свою первую игру, правда пока она работает в консоли :( В ней вы можете прыгать и ходить влево, вправо. Но у игры есть один баг: после прыжка... подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
06.05.2013, 00:41
Вот что за петух вас клюнул? У вас не продакшн-левел библиотека массивов, подобные извращения тут ни к чему.

Эта штука нужна для exception-safety при копировании массива. Её задача: или выдать вам в конце концов указатель на массив из корректно скопированных элементов, или аккуратно удалить весь мусор в случае выброса исключения в процессе копирования. Любого исключения, будь-то память не выделилась или конструктор копирования облажался.

Если бы вам кое-кто не подкинул мысль, что конструктор по умолчанию может и не существовать, то достаточно было бы примитивного варианта в три строки со временным массивом.

Перегружать ничего не надо. Это именно что такие функции, которые именно так и вызываются:
C++
1
2
3
T *ptr = reinterpret_cast<T*>(operator new[](N * sizeof(*ptr)));
///
operator delete[](ptr);
malloc() и free(), считайте.

Конструктор копирования с помощью placement new вызвается в том init().

get() возвращает тот указатель на массив, что вернул operator new[](), и в котором проводил инициализацию init(). После этого данный объект забывает этот указатель. Он передал ему тому, кто вызвал get().

Деструкторы вызываются в деструкторе этого класса. Вызывать их надо только для того, что было проинициализировано (надо помнить, какой кусок массива был проинициализирован, а какой — нет). И только в том случае, если get() не был вызван до этого.

Ещё раз говорю: забейте. Если вы не знаете, зачем это надо, то оно вам не надо. YAGNI.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru