|
Модераторы: Daevaorn |
|
bilbobagginz |
|
|||
Naughtius Maximus Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 3 Всего: 317 |
насчет всего того что код предыдущего кодера иногда писан через одно место:
вопрос какая задача стояла у программиста предыдущего кодa. Oбычно интересный проект - пайлот, когда заказчик еще сам не знает чего надо досконально, и описывает задачу в процессе реализации. также возможны подводные камни которые без опыта обнаружатся тоже в процессе реализации. можно не взять такой заказ, а можно взять. когда берешь, имеет место быть шанс плохого дезайна. есть конечно тривиальные задачи, которые не нужно "разрабатывать" - взял шаблон и шаблонь. но не всегда. но ногами писАть, согласен - нехорошо! Это сообщение отредактировал(а) bilbobagginz - 21.3.2006, 15:03 -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
UnrealMan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
А чем собс-но плох malloc? В случае, когда используются нетривиальные объекты (с конструктором, деструктором), и требуется перевыделение памяти с сохранением данных (realloc), использование new и delete – явно не самое удачное решение. |
|||
|
||||
likehood |
|
|||
666 Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
А как ты собрался вызывать коструктор из маллока? Хотя, конечно, в данном случае new и delete не особо нужны - классов то все равно нет. |
|||
|
||||
DeadSoul |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
1. (Как сказали выше) Ничего не знает про конструкторы\деструкторы 2. Для malloca нет smart pointer-ов
Самое лучшее решен ие в таком случае - std::vector, но никак не realloc -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
UnrealMan |
|
||||||||||
Опытный Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Ясное дело, конструктор вызывается отдельно.
И что? Самому сложно добавить их вызов?
Не велика потеря. При желании можно написать свои.
Чем же оно самое лучшее? Быcтрей работает что ли (во всех ситуациях)? |
||||||||||
|
|||||||||||
likehood |
|
||||
666 Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
Что??? Явный вызов конструктора по указателю? Ты на каком языке пишешь? Да ты что, это же мое любимое занятие - делать работу за компилятора. А причем тут умные указатели? Для них просто перегружают некоторые операции, но совсем не обязательно перегружать new и delete.
Лучшее - не значит самое быстрое. А то бы все писали на Си и Асме. |
||||
|
|||||
UnrealMan |
|
||||||||||
Опытный Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Ну, да. А что тут, собс-но, смущает?
Ну, макросы ещё вроде бы никто не отменял:
Правда, чтобы эта штуковина заработала внутри шаблонов, придётся ещё повозиться :-)
В некоторых ситуациях быстрота существенна. Это сообщение отредактировал(а) UnrealMan - 31.3.2006, 19:00 |
||||||||||
|
|||||||||||
DeadSoul |
|
||||
Эксперт Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Велосепидисты вперед!
Еще раз вперед А что знают макросы про области видимости и пространства имен? -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
||||
|
|||||
UnrealMan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
То же, что и new :-) Ну, и? Это типа повод использовать везде и всюду std::vector? Я-то, в общем-то, не выдвигаю здесь тезис в духе «malloc рулит, всё остальное голимый отстой», а только спрашиваю, почему само по себе использование malloc (независимо от того, какая задача решается) вызывает этакое презрение. |
|||
|
||||
DeadSoul |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Потому, что для new все уже написано. -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
UnrealMan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Потому, что предрассудки всё это :-) |
|||
|
||||
DeadSoul |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 1217 Регистрация: 25.9.2005 Где: Москва Репутация: 2 Всего: 11 |
Это не предрассудки. Это деньги. За последний год я ни разу не написал delete или delete[]. Умные указатели\STL рулят -------------------- Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". Бьем спамеров их же оружием. Пусть весь спам сыпется им [email protected] |
|||
|
||||
UnrealMan |
|
|||
Опытный Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Примитивно это как-то – выискивать некий самый лучший способ на все случаи жизни. Всё зависит от требований задачи. И вот уж как не надо писать код, так это без учёта этих самых требований, руководствуясь только лишь мыслью «а у меня уже есть самый-самый крутой способ, я буду с превеликим благоговением молиться на него и использовать везде во всех своих программах».
|
|||
|
||||
likehood |
|
||||
666 Профиль Группа: Участник Сообщений: 536 Регистрация: 21.12.2005 Репутация: 8 Всего: 24 |
Да вот как раз не выискивать лучшие способы примитивно, только не на все случаи жизни, а на большую их часть. Если меня устраивает быстродействие new/delete, то почему я должет отказываться от них? Но в любом случае malloc - не лучшее решение, правильнее будет перегрузить new/delete. В любом случае, для использования malloc должны быть очень веские причины и вряд ли в том г. про которое говорил Ignat они были (кроме плохого знания С++). P.S. 2UnrealMan А на счет явного вызова конструктора - признаю, не знал. Просто никогда не доводилось пользоваться. Решил проверить первым попавшимся под руку компилером - это был 6-й Билдер. Билдер дал по рукам. После твоего поста:
попробовал еще раз - на этот раз в VC6. Все прошло в лучшем виде. Правду говорят - Билдер это зло. |
||||
|
|||||
UnrealMan |
|
||||||||
Опытный Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Отказываться от new и delete я и не призываю. Да и к быстродействию самих по себе new/delete я никаких претензий не имею – собс-но, если я чего не путаю, они вызывают те же malloc и free, а потому по скорости работают одинаково. Хотя есть и функции, которые работают пошустрей, например, AllocMemory и FreeMemory (bhsupp.dll). Однако ж я не вижу причин полного отказа от malloc.
Обоснования этой правильности?
Ну прям очень. Один и тот же результат (в отношении тривиальных объектов без конструкторов), но new всё равно лучше! :-) В это надо просто уверовать...
А как ты в builder'е пробовал-то вызывать конструктор? Так: pointer->Class() или так: pointer->Class::Class() ? Это сообщение отредактировал(а) UnrealMan - 2.4.2006, 12:08 |
||||||||
|
|||||||||
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |