я был просто интересно, отличаются ли эти две строки кода:Я правильно интерпретирую сборку сборки Visual Studio?
bool done = false;
bool done(false);
кажется, что второй будет быстрее, так как в первом случае мы называем конструктор по умолчанию, а затем присвоить значение. Если во втором мы вызываем только конструктор.
(Может быть, это должно быть свой вопрос?)
я застрял в контрольной точке и взглянули на выходе ассемблере для обеих линий. Они точно так же:
bool done = false;
00F66E7D mov byte ptr [done],0
Am Я прав, заключая поэтому, что две линии совпадают, или по-крайней мере, компилятор оптимизирует один из них?
Правильно ли это работает?
Скалярные типы не имеют конструкторов. –
@KerrekSB Ahh, ладно. Поскольку синтаксис совпадает с синтаксисом конструктора в строке 2, я понял, что это так. Полагаю, это не так! – Greeny