пятница, 18 февраля 2011 г.

const или static const?

Это обсуждение напомнило, что один из наших подпроектов, сделанный студенткой и содержащий внутри функций большие константные массивы насчитанных каким-то математическим ПО данных, компилировался минут эдак под тридцать, пока не догадались заменить там const на static const. Ибо генерировался код заполнения этих самых массивов этими самыми данными (не говоря уж о том, что потом исполнялся при каждом входе в функцию). Хотя казалось бы — ну зачем этот код, раз массивы константны (и зачем размещать их на стеке)?

пятница, 28 января 2011 г.

Конструктор преобразования и оператор присваивания

Есть конструктор преобразования:
MyType(OtherType value);
Надо ли определять ещё и оператор присваивания? Такой:
MyType &operator=(OtherType value);
Пожалуй, да. Без него, смотрим disassembly MS Visual Studio 2005 для Debug, при присвоении MyType-у OtherType-а есть вызов конструктора и отдельно присвоение двумя mov-ами, с ним - просто вызов оператора присваивания.