Различные способы инициализации данных в C ++ - PullRequest
0 голосов
/ 26 мая 2020

Недавно я обнаружил, что в C ++ мы можем инициализировать целое число или, если уж на то пошло, другой примитивный тип данных в C ++, используя разные способы. 1004 *

Тот, который я недавно узнал, сделан как:

int i(50);       //initialised to 50
char c('a');     //initalised to 'a'

Поэкспериментировав еще, я обнаружил, что то же самое можно сделать в и еще одним способом в C ++ ! следующим образом:

int i{50};       //initialised to 50 just as before
char c{'a'};     //initalised to 'a'...same again

Они также применимы ко всем другим примитивным типам данных в C ++. Теперь я не могу не задаться вопросом, отличаются ли выше разные типы инициализации данных каким-либо возможным образом?

  1. Один эффективнее другого? Есть ли какие-либо преимущества от использования одного над другим?
  2. Есть ли какой-либо сценарий, в котором один предпочтительнее другого?
  3. Если нет, то почему предусмотрены все эти различные виды инициализации? Если да, то можете ли вы дать какой-нибудь сценарий, в котором у каждого есть свое место использования?

1 Ответ

4 голосов
/ 26 мая 2020

Один эффективнее другого?

Нет.

Существует ли какой-либо сценарий, в котором один предпочтительнее другого?

Фигурные скобки часто предпочтительнее, когда они вариант, поскольку они не позволяют сужать неявные преобразования, которые часто бывают непреднамеренными.

Обратите внимание, что фигурные скобки и круглые скобки влияют на разрешение конструктора в случае типов классов. В этом случае предпочтительнее те, которые разрешаются конструктору, который вы собираетесь использовать.

почему предусмотрены все эти различные виды инициализации?

  1. Назад совместимость
  2. Generi c программирование (шаблоны)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...