Это способ вызова конструкторов членов класса point3. если x, y и z являются числами с плавающей запятой, то это просто более эффективный способ записи этого
point3( float X, float Y, float Z):
{
x = X;
y = Y;
z = Z;
}
Но если x, y и z являются классами, то это единственный способ передать параметры в их конструкторы
{ {1}} В вашем примере point3
- это конструктор класса с тем же именем ( point3
), а содержимое справа от двоеточия :
перед открывающей скобкой {
- это список инициализации , который, в свою очередь, создает (т.е. инициализирует) переменные-члены point3
(а также могут использоваться для передачи аргументов конструкторам в базовом классе [es], если таковые имеются.)
Инициализация члена, как указывали другие. Но более важно знать следующее:
Когда аргументы относятся к типу float или другим встроенным типам, нет явных преимуществ, кроме использования инициализации члена, а не присваивания (в теле конструктор) в C ++ более идиоматичен.
Явным преимуществом является то, что если аргументы относятся к классам, определяемым пользователем, инициализация этого члена приведет к вызовам конструкторов копирования, в отличие от конструкторов по умолчанию, если они выполняются с использованием присваиваний (в теле конструктора).