Achtung! Показатели!; + + И + + против

Сегодня на работе я наткнулся на очень глупые ошибки, над которыми он потерял несколько драгоценных минут. Может быть, нечего было хвастаться, но мы доведены до сведения. Бы добавить в модуль функтор, и я хотел проверить это так (код латинскими буквами):

void Init() { Functor<CFoo> func(&mFoo, &CFoo::foo); myObj->SetFunctor(&func); } 

Каково же было мое удивление, когда спустя я хотел позвать functora, конечно, за рамки метода Init () :) Интересно, что произошло с индикатором FUNC, и для него после окончания инициализации? :) На usprawidlenie я могу сказать только то, что платформа, на которой было написано не использовать визуальный stuio отладчик и необходимость внешнего средство отладки и довольно "тяжелый".

Другое дело, что я хочу отметить, разница в скорости исполнения пред-и пост-инкремент. Как-то в книге, которую я читаю довольно старая книга использовать предварительно прирост, а не пост-инкремент, и что будто бы быстрее. На сегодняшний день коллеги просили меня, чтобы подчеркнуть это в своем коде и поэтому я решил проверить на примере составитель Visual Studio 2008 Express. Я сделал простой пример (1000-кратный цикл с несколькими mnożeniami и dodawaniami в центре) и с помощью коллег, кто знает ассемблер zdeassemblorawalismy его. И что оказалось? Оба кодекса являются идентичными :) Может быть, в некоторых сложных примеров есть ли существенная разница, но с обычной форумах и inkrementacjach на компиляторы сегодня и процессоры, нет никакой разницы (по крайней мере я так думаю :) .

Один из ответов

  1. Reg говорит:

    + + Я против я + + делает разницу в случае итераторы STL, и, так как последний должен помнить старое значение в качестве временной, увеличить себе и временных возвращаемого значения. Natomist, если я это INT, компилятор в действительности генерирует тот же код.

Оставить комментарий

Обратите внимание: Комментарий умеренности включен и может задержать ваш комментарий. Существует нет необходимости повторно свой комментарий.