Информация об изменениях

Сообщение Re: Порядок создания объектов от 01.06.2023 9:19

Изменено 01.06.2023 9:30 CRT

Re: Порядок создания объектов
Здравствуйте, _NN_, Вы писали:


_NN>Какие мысли ?


я конечно подотстал в новых стандартах в с++.
Но у тебя в коде указан сначала вызов конструктора для Tool, а потом для std::thread
я не вижу отличий между просто вызовом двух функций последовательно и вызовом двух конструкторов последовательно один за другим.
Например
a();
b();

как компилятор может сначала вызвать b() перед a()?
у меня это в голове не укладывается. Такого быть не должно.
Re: Порядок создания объектов
Здравствуйте, _NN_, Вы писали:

_NN>
_NN>Tool tool{};

_NN>std::thread toolRunner([]() {
_NN>    printf("Starting tool");
_NN>});
_NN>

_NN>Какие мысли ?

я конечно подотстал в новых стандартах в с++.
Но у тебя в коде указан сначала вызов конструктора для Tool, а потом для std::thread
я не вижу отличий между просто вызовом двух функций последовательно и вызовом двух конструкторов последовательно один за другим.
Например
a();
b();

как компилятор может сначала вызвать b() перед a()?
у меня это в голове не укладывается. Такого быть не должно.

Поэтому мой ответ такой. Конструктор Tool полностью отработает до того как вызовется конструктор std::thread
и поэтому printf("Starting tool") вызовется когда tool уже создан.