Сообщение Re: Порядок создания объектов от 01.06.2023 9:19
Изменено 01.06.2023 9:30 CRT
Re: Порядок создания объектов
Здравствуйте, _NN_, Вы писали:
_NN>Какие мысли ?
я конечно подотстал в новых стандартах в с++.
Но у тебя в коде указан сначала вызов конструктора для Tool, а потом для std::thread
я не вижу отличий между просто вызовом двух функций последовательно и вызовом двух конструкторов последовательно один за другим.
Например
как компилятор может сначала вызвать b() перед a()?
у меня это в голове не укладывается. Такого быть не должно.
_NN>Какие мысли ?
я конечно подотстал в новых стандартах в с++.
Но у тебя в коде указан сначала вызов конструктора для Tool, а потом для std::thread
я не вижу отличий между просто вызовом двух функций последовательно и вызовом двух конструкторов последовательно один за другим.
Например
a();
b();
как компилятор может сначала вызвать b() перед a()?
у меня это в голове не укладывается. Такого быть не должно.
Re: Порядок создания объектов
Здравствуйте, _NN_, Вы писали:
_NN>
_NN>Какие мысли ?
я конечно подотстал в новых стандартах в с++.
Но у тебя в коде указан сначала вызов конструктора для Tool, а потом для std::thread
я не вижу отличий между просто вызовом двух функций последовательно и вызовом двух конструкторов последовательно один за другим.
Например
как компилятор может сначала вызвать b() перед a()?
у меня это в голове не укладывается. Такого быть не должно.
Поэтому мой ответ такой. Конструктор Tool полностью отработает до того как вызовется конструктор std::thread
и поэтому printf("Starting tool") вызовется когда tool уже создан.
_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 уже создан.