Возможный дубликат:
Что это за странный синтаксис двоеточия в конструкторе?
C ++ инициализация
Я только что получил файл заголовка в программе C ++, и я не могу понять, что делает эта строка кода:
Card(Value faceValue=deuce, Suit suit = clubs):
suit(suit), faceValue(faceValue) {}
Что это :
значит, и почему заменить его на ;
(как я думал, я должен) нарушить код?
Извините за общность этого вопроса, но кто-то может объяснить, пожалуйста, цель этих двух строк?
Спасибо за ваше время.
Это похоже на конструктор для Card
учебный класс. Часть после :
это список инициализаторов, инициализирующий значения переменных-членов (или родительских классов, но я не думаю, что это применимо в этом случае). Тело конструктора пустое, потому что все, что ему нужно было сделать, было сделано в списке инициализатора.
Следующие: и список инициализации. Причина, по которой вы используете его вместо назначения переменных-членов в теле конструктора, заключается в том, что если вы сделаете это внутри тела конструкторов, сначала будет вызван конструктор по умолчанию, а затем будет вызван конструктор копирования или оператор присваивания. Используя список инициализации, вы пропустите первый шаг.
Списки инициализации. Это предпочтительный способ инициализации конструкторов классов в C ++.
Он используется потому, что позволяет инициализировать const
члены класса без ошибок компиляции.