О да тут ен в бровь а в глаз. Возраженья принимаются. Копи контсруктор добавляем ошипки поправляем. Проблема стилл екзист.
Проблема что будет если в операторе = возникнет исключение при запросе на новую память? Разница с конструкторами в том - что обхек уже существует, а после исключения он продолжает существовать но безнадежно испорчен... Вопрос что делать?:)
Тем орлам, которые придумали, что new должен швыряться эксепшенами вместо нормального возвращения нуля, я бы выбил глаз.
Бьешься тут за оптимальный код и вдруг приходят орлы и такое в стандарт пишут...
Знаете что. Я пожалуй погорячился.
Оба глаза надо выбить.
Пральные пасаны всегда берегут свое зрение и поетому придумывают разные вещи. Конкретно для нью они придумали целых две:
1. new(notrhow) возвратит чисто нуль и не кинет ни в кого ексепшеном а также
2. new_handler set_new_handler(new_handler )
в случае проблемы н.ю будет вызывать ету функцию, более того если не предусмотреть выхода он ее будет до посинения вызывать
Эта мутная фигня с хендлерами и тп мне, безусловно, известна.
Тем кто ее придумал можно глаз и не выбивать, но щелбанов надавать стоило бы.
А те дураки, которые заставили простой new exception кидать, видимо были не в курсе, что и до них программы на плюсах писались. И писались из рассчета, что new возвращает 0 при нехватке памяти. Потому что в первых версиях Страуса это было документированное поведение.
Я, кстати, не помню, кто придумал швыряться - Страус или ансишные бойцы. Скорее всего ансишные. Страус, пока управлял стандартом, был гораздо осторожнее и разумнее.
Я, конечно, не специалист, так что больно не бейте . По-моему, вариант со swap не самый эффективный из-за overhead плюс лишний вызов memcpy. А такой вариант не подойдёт (new выбрасывает exception)?
aissp писал(а):Ты меня пугаешь. Ето было принято вроде году етак в 95, неужели в вашей конторе такой богатый на историю код? Времен етак Ф-19 и вольфа 3д?
Эксепшены у нас отключены нафиг. Они же нам фрейм рейт убьют.
Ф-19 и вольф - не наши игры. Но код тех времен, почти наверняка, где-то в проектах еще сохранился.