функция — Что ЭТО делает? Переполнение стека

Возможный дубликат:
Что это за странный синтаксис двоеточия в конструкторе?
C ++ инициализация

Я только что получил файл заголовка в программе C ++, и я не могу понять, что делает эта строка кода:

Card(Value faceValue=deuce, Suit suit = clubs):
suit(suit), faceValue(faceValue) {}

Что это : значит, и почему заменить его на ; (как я думал, я должен) нарушить код?

Извините за общность этого вопроса, но кто-то может объяснить, пожалуйста, цель этих двух строк?

Спасибо за ваше время.

0

Решение

Это похоже на конструктор для Card учебный класс. Часть после : это список инициализаторов, инициализирующий значения переменных-членов (или родительских классов, но я не думаю, что это применимо в этом случае). Тело конструктора пустое, потому что все, что ему нужно было сделать, было сделано в списке инициализатора.

2

Другие решения

Следующие: и список инициализации. Причина, по которой вы используете его вместо назначения переменных-членов в теле конструктора, заключается в том, что если вы сделаете это внутри тела конструкторов, сначала будет вызван конструктор по умолчанию, а затем будет вызван конструктор копирования или оператор присваивания. Используя список инициализации, вы пропустите первый шаг.

2

Списки инициализации. Это предпочтительный способ инициализации конструкторов классов в C ++.

Он используется потому, что позволяет инициализировать const члены класса без ошибок компиляции.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector