Я читал о различиях в следующем:
1)
std::string test = level > 10 ? "Master" : "Beginner";
2)
std::string test;
if (level > 10)
test = "Master";
else
test = "Beginner";
И во втором случае мне сказали, что во втором варианте создается временное значение, которого я не понимаю.
Я узнал, что когда мы объявляем переменную без инициализации, она принимает мусор, поэтому компилятор просто удерживает место в памяти, а не " работа », чтобы изменить его значение.