Переменные после двоеточия в конструкторе [дубликат]

22
задан Coconop 30 August 2018 в 09:31
поделиться

3 ответа

Это способ вызова конструкторов членов класса point3. если x, y и z являются числами с плавающей запятой, то это просто более эффективный способ записи этого

point3( float X, float Y, float Z):
{
   x = X;
   y = Y;
   z = Z;
}

Но если x, y и z являются классами, то это единственный способ передать параметры в их конструкторы

{ {1}}
22
ответ дан 29 November 2019 в 05:29
поделиться

В вашем примере point3 - это конструктор класса с тем же именем ( point3 ), а содержимое справа от двоеточия : перед открывающей скобкой { - это список инициализации , который, в свою очередь, создает (т.е. инициализирует) переменные-члены point3 (а также могут использоваться для передачи аргументов конструкторам в базовом классе [es], если таковые имеются.)

4
ответ дан 29 November 2019 в 05:29
поделиться

Инициализация члена, как указывали другие. Но более важно знать следующее:

Когда аргументы относятся к типу float или другим встроенным типам, нет явных преимуществ, кроме использования инициализации члена, а не присваивания (в теле конструктор) в C ++ более идиоматичен.

Явным преимуществом является то, что если аргументы относятся к классам, определяемым пользователем, инициализация этого члена приведет к вызовам конструкторов копирования, в отличие от конструкторов по умолчанию, если они выполняются с использованием присваиваний (в теле конструктора).

0
ответ дан 29 November 2019 в 05:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: