Здравствуйте, гость ( Вход | Регистрация )
AD | Дата 21.4.2010, 17:48 |
тут обнаружил дома книжку: "Герб Саттер и Андрей Александреску. Стандарты программирования на С++. 101 правило и рекомендация." Круто. Как раз эту книжку давно хотел купить, но она неожиданно исчезла с прилавков магазинов! Почитай. Вещь, уверен, что полезная. Отдельные книги Саттера и Александреску я читал! |
|
Litkevich Yuriy | Дата 21.4.2010, 12:57 |
см. Саттер, "Решение сложных задач на C++" тут обнаружил дома книжку: "Герб Саттер и Андрей Александреску. Стандарты программирования на С++. 101 правило и рекомендация." |
|
Влад | Дата 20.4.2010, 21:36 |
Юрий, просто Стандарт языка (п. 5.3.5 положение (clause) 2) четко описывает требования к выделению и удалению памяти: - если память была выделена по new для единичного объекта (неважно, какого типа) - то удаляться она должна только delete для единичного объекта; - если память была выделена по new[] для массива объектов (array form) - то удаляться она должна только delete[] для массива объектов (тоже array form) и никак иначе. Иначе поведение программы не определено (Otherwise behavior is undefined, если мой склероз мне не изменяет). Причем, Стандарт никак не конкретизирует это "неопределенное поведение" - программе разрешается делать все, что ей заблагорассудится, начиная от порчи памяти и невоспроизводимых глюков, и вплоть до format C:. |
|
DIMEDROLL | Дата 20.4.2010, 19:34 |
Цитата Конструктор Копирования и Оператор Присваивания Что-то - некоректный КК и/или ОП чёткий, например сообщение: "Конструктор копирования работает не корректно" В таком случае мой код(функция и оператор==) соотвествует данном описанию, если что не так - будет ассерт с сообщением. POD это int, double, short .... тоесть встроенные типы Си P.S гуглится за меньше минуту Добавлено: был неправ, POD - структура данных не имеющая никаких методов, только члены-переменные википедия англ. |
|
Litkevich Yuriy | Дата 20.4.2010, 19:23 |
// эта ошибка приводит к UB! Стандарт, 5.3.5/2 вот про это я не понял, а что тут неопределённого?/* delete theBuffer; */ delete[] theBuffer; // здесь везде i должны быть строго < theSize! О-о-о, надо срочником тест подправить, а то выход за пределы индексации я не проверял. Спасибо!Plain Old Data это мне тоже ни о чём не говорит, "Плоские старые данные" |
|
Влад | Дата 20.4.2010, 19:19 |
POD - Plain Old Data. | |
Litkevich Yuriy | Дата 20.4.2010, 19:16 |
что такое КК и ОП? Конструктор Копирования и Оператор Присваиванияпоскольку abuffer - POD что означает эта абревиатура?Что-то это что? Что-то - некоректный КК и/или ОПчёткий эффект это какой? чёткий, например сообщение: "Конструктор копирования работает не корректно" |
|
Влад | Дата 20.4.2010, 19:12 |
Я немного подправил код.... Правда, не компилировал! Только то, что бросается в глаза при чтении. Раскрывающийся текст
|
|
DIMEDROLL | Дата 20.4.2010, 19:07 |
собственно, я рассматриваю, отсутствие, как частный (а может и вовсе жёсткий) случай неправильной реализации КК и ОП. Т.е. должен быть какой-то чёткий эффект если что-то сделано не верно. что такое КК и ОП? Цитата Т.е. должен быть какой-то чёткий эффект если что-то сделано не верно. Что-то это что? чёткий эффект это какой? |
|
Litkevich Yuriy | Дата 20.4.2010, 19:03 |
не пишет реализацию конструктора копирования и оператора присваивания, то он подразумевает что по вариант по умолчанию его собственно, я рассматриваю, отсутствие, как частный (а может и вовсе жёсткий) случай неправильной реализации КК и ОП. Т.е. должен быть какой-то чёткий эффект если что-то сделано не верно. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 24.4.2024, 0:22 |