В точности то, что написано в названии. Я использую MSVC++ 2008 express, и мой конструктор класса никогда не выполняется при компиляции в режиме выпуска. Он ДЕЙСТВИТЕЛЬНО работает в режиме отладки.
Я делаю что-то вроде:
ClassTest test;
test.DoIt();
Точки останова на DoIt(); срабатывают, а точки останова на ClassTest::ClassTest(); - нет.





Просто подумайте - это может быть оптимизация компилятора в режиме Release, которая предотвращает попадание в точку останова. Это могло произойти, если конструктор ничего не делает (т. Е. Не работает). Попробуйте добавить в конструктор несколько простых операторов, например
Затем добавьте точку останова на шаге (3) выше и посмотрите, достигнута ли эта точка останова.
Вы можете увидеть всевозможные странные проблемы отладки с тем, как точки останова достигаются в режиме выпуска из-за произведенных оптимизаций.
Оказывается, я тупица, конструктор БЫЛ исполнялся. Я случайно указал wsa.wVersion в качестве первого параметра для WSAStartup вместо использования MAKEWORD, который по какой-то причине работает в режиме отладки.
Спасибо, Мэтт - это хороший момент. Инициализация переменной была первым делом, которое пришло в голову просто для проверки теории, но фактическое использование переменной также было бы очень важно. Я обновлю ответ.
Это правильно, но если вы объявляете и инициализируете int, а затем не используете его, он все равно может быть оптимизирован, и в результате точка останова не сработает. Вы хотите включить оператор с внешними побочными эффектами, чтобы компилятор не смог его оптимизировать.