Здравствуйте, MasterZiv, Вы писали:
MZ>Ребята, вот зачем вот это вот всё ? MZ>В форумах по линуксу линуксоиды сруца, какой дистр лучше. MZ>В форумах по плюсам -- кто плюсы знает лучше ...
Чтобы узнать новое. В данном случае у топикстартера есть шанс понять, что он (пока еще) не гуру. Продолжать пописывать советы конечно можно, но рекомендовать их "собеседуемым" не стоит, тем более, что в природе существуют аналогичные советы мирового уровня.
Здравствуйте, igna, Вы писали:
I>Здравствуйте, Abyx, Вы писали:
ШЕ>>>Для динамических объектов можно использовать смарт указатели. Например: shared_ptr (boost::shared_ptr, std::shared_ptr) или std::auto_ptr A>>std::auto_ptr устарел. в С++03 лучше использовать boost::scoped_ptr или boost::unique_ptr
I>Вот кстати пример того, почему лучше все-таки читать советы настоящих, а не доморощенных гуру.
Здравствуйте, MasterZiv, Вы писали:
MZ> Может лучше на неправ(иль|ослав)ные технологии свой гнев обращать MZ> хоть когда-нибудь?
Гнев на технологии лучше тоже не обращать. Технологии надо анализировать и оценивать и, следовательно, применять или не применять по результатам. А гневаться лучше на что-нибудь другое.
Здравствуйте, Шебеко Евгений, Вы писали:
ШЕ>delete не может вызвать деструктор для тех объектов, чьё объявление классов он не видит.
ну об этом и компилятор прожужжит если что:
function 'int main(int, char**)':
warning: possible problem detected in invocation of delete operator:
warning: 'v' has incomplete type
warning: forward declaration of 'struct human_t'
note: neither the destructor nor the class-specific operator delete will be called, even if they are declared when the class is defined.
ну или так:
warning C4150: deletion of pointer to incomplete type 'human_t'; no destructor called
see declaration of 'human_t'
Здравствуйте, Abyx, Вы писали:
A>std::auto_ptr устарел. в С++03 лучше использовать boost::scoped_ptr или boost::unique_ptr
Согласен, но на практике вынужден использовать std::auto_ptr из-за Boost.PointerContainer, который я обычно использую в любом проекте.
Почему то разработчики PointerContainer не удосужились сделать методы с тем же boost::scoped_ptr, поэтому приходится делать так:
Здравствуйте, savitar, Вы писали:
A>>std::auto_ptr устарел. в С++03 лучше использовать boost::scoped_ptr или boost::unique_ptr
S>Согласен, но на практике вынужден использовать std::auto_ptr из-за Boost.PointerContainer, который я обычно использую в любом проекте. S>Если бы хотябы у boost::scoped_ptr был метод release(), но его нет, интересно почему?
есть секретный класс <boost/interprocess/smart_ptr/unique_ptr.hpp>
Здравствуйте, wander, Вы писали:
W>Здравствуйте, MasterZiv, Вы писали:
MZ>> Может лучше на неправ(иль|ослав)ные технологии свой гнев обращать MZ>> хоть когда-нибудь?
W>Гнев на технологии лучше тоже не обращать. Технологии надо анализировать и оценивать и, следовательно, применять или не применять по результатам. А гневаться лучше на что-нибудь другое.
А лучше вообще не гневаться, гнев — это грех.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, Шебеко Евгений, Вы писали:
ШЕ>Сейчас приходится собеседовать много новичков. ШЕ>Заметил что ничего в жизни не меняется. ШЕ>Даже люди с опытом работы в крупных наступают на те же грабли, на которые наступал я в своё время.
ШЕ>Хочу представить такие рекомендации новичкам в C++. Для того чтобы вы могли повысить свой уровень ШЕ>ну и хотя бы лучше пройти собеседование.
Для новичков все эти советы не работают, пока они сами не наступят на все эти грабли.
Здесь выбор только один из двух: — не брать новичков; — смириться (если есть дополнительные деньги и время на рефакторинг и обучение)
Здравствуйте, Alexéy Sudachén, Вы писали:
P>>при rvo/nrvo в функцию передаётся скрытая ссылка, на то, куда писать результат. я предполагал, что в этом случае eax не заполняется. но видимо так оптимальней — чтобы лишний раз не высчитывать. P>>то есть eax таки используется. но в случае rvo не из-за нужды, а для оптимальности. AS>Таки получается что чутьё меня не подвело, а CL откровенно тупит. Получается что я был о нём лучшего мнения. Ну и нафиг нужен такой RVO?
это был мой первый вопрос, когда я смотрел его код лет 7 назад. теперь мне очень стыдно, что я это спросил, я
переоценил чувака.
это как, помню, в книге Хэрриота он спросил у реднекоподобных фермеров, как им понравилась последняя пьеса Шоу
кстати, в этом году он все-таки решил использовать вектор — ГАГАГА, ему был нужен динамически растущий массив и, блин,
он быстро сообразил мозгом макаки, что написать это с галимым ручным управлением памятью ему уже БАНАЛЬНО НЕ ПОД СИЛУ.
в итоге все кончилось сломанным билдом не некоторых платформах — про включение заголовка и про пространства имен козел не сообразил.
Of course, the code must be complete enough to compile and link.
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>>соседушко по офису, дебил и неряха, десятилетиями пишет код вида: L_L>>Спасает только статический анализатор, который заваливает этого ЛОШАРУ горами сообщений. L_L>>Ес-но, фикся, кретин плодит новое говно и получает по тупой харе от анализатора и т.д. — имя этому процессу — бесконечность.
CC>А куда смотрит тимлид и прочий менеджмент?
видимо, пофигу. то ли тут действует правило: "чел старый и проверенный" (он у истоков), то ли еще проще: ковыряться в высерах этого "творца" никому не охота, пусть он сам и сидит годами на этом дерьме.
Of course, the code must be complete enough to compile and link.
Здравствуйте, Lorenzo_LAMAS, Вы писали:
K>>Почему он вектор не использует?
L_L>это был мой первый вопрос, когда я смотрел его код лет 7 назад. теперь мне очень стыдно, что я это спросил, я L_L>переоценил чувака.
Да вообще всякое бывает. Может такое было оправдано? Хотя в 99% проще заюзать стл.
L_L>кстати, в этом году он все-таки решил использовать вектор — ГАГАГА, ему был нужен динамически растущий массив и, блин,
Странно, что был выбран вектор для этого. L_L>он быстро сообразил мозгом макаки, что написать это с галимым ручным управлением памятью ему уже БАНАЛЬНО НЕ ПОД СИЛУ. L_L>в итоге все кончилось сломанным билдом не некоторых платформах — про включение заголовка и про пространства имен козел не сообразил.
Зато он наверное все собеседования прошёл.
Здравствуйте, Kernan, Вы писали:
L_L>>кстати, в этом году он все-таки решил использовать вектор — ГАГАГА, ему был нужен динамически растущий массив и, блин, K>Странно, что был выбран вектор для этого.
а что не так? vector — он как-бы дефолт, и не плохой дефолт. и даже в стандарте написанно, что он дефолт.
хочется deque? нужно сначала обосновать
L_L>>это был мой первый вопрос, когда я смотрел его код лет 7 назад. теперь мне очень стыдно, что я это спросил, я L_L>>переоценил чувака.
K>Да вообще всякое бывает. Может такое было оправдано? Хотя в 99% проще заюзать стл.
В коде, который они лобали в 95-ом 96-ом — воплне возможно. Плохо, что с тех пор С++ для них таким, как он был в начале девяностых
K>Странно, что был выбран вектор для этого.
Вектор ему лучше всего подошел.
K>Зато он наверное все собеседования прошёл.
в этом году было какое-то подобие аттестации для сотрудников типа него (у него очень хорошая позиция-контракт, он практически бессмертен) — он прибежал с нее, подпрыгивая от радости,
из чего я сделал вывод, что все зашибись и удачно прошло.
Of course, the code must be complete enough to compile and link.
Я вот чего понять не могу, ты прикалываешься или серьёзно не знаешь что на x86 C/C++ оптимально возвращают объекты размером до 2 слов процессора через регистры? Очевидно, что студия откровенно тупит, не оптимизируя такой кейc с RVO. Ещё более она тупит при возврате структуры размером больше двух слов, чего гнусь не делает. Что меня удивило, да. Гнусь возвращает такие структуры совершенно одинаково для обоих случаев.
То есть мой способ, там где он использован, заведомо не хуже чем любой другой. Так что не надо придумывать новую задачу и говорить что в ней то всё не так. Это уже будет другая задача.
Здравствуйте, Alexéy Sudachén, Вы писали:
P>>а знаешь что ему голову сносит? Аггрегаты! AS>Я вот чего понять не могу, ты прикалываешься или серьёзно не знаешь что на x86 C/C++ оптимально возвращают объекты размером до 2 слов процессора через регистры?
ээ, я пример привёл — там точно больше двух слов
AS>Очевидно, что студия откровенно тупит, не оптимизируя такой кейc с RVO.
там NRVO.
RVO она даже в debug делает
AS>То есть мой способ, там где он использован, заведомо не хуже чем любой другой. Так что не надо придумывать новую задачу и говорить что в ней то всё не так. Это уже будет другая задача.
да не, естественно в том примере это вообще не важно, точно также как shared_ptr — это обсудили вроде?
я в общем показываю, что RVO предпочтительней...