Разница между =
и фигурными скобками в инициализаторе практически отсутствует. Если вы столкнулись с разницей, вы делаете что-то странное или на компиляторе до C ++ 14.
Основное различие между {}
и ()
заключается в том, что {}
не работает неявные преобразования, такие как не explicit
конструкторы преобразования и операторы преобразования, переключение между типами со знаком и без знака и расширение или сужение целочисленных значений и значений с плавающей запятой. Из-за этого, общий совет, который я слышал, состоит в том, чтобы по возможности предпочитать {}
, чтобы избежать неожиданных преобразований типов.