Список инициализации конструктора используется тогда, когда одно, или несколько свойств класса, по умолчанию должны быть проинициализированы соответствующими значениями.
Пример:
class A
{
private:
int x;
public:
A() : x(10) {}
void Show()
{
cout<<x<<endl;
}
};
void main()
{
A a;
a.Show();
Так же это помогает, когда нужно создать массив объектов
A b[3];
for (int i=0;i<3;i++)
b[i].Show();
}
Все свойства x массива объектов b инициализируются по умолчанию соответствующими значениями.
Несколько свойств по умолчанию
class A
{
private:
int x,y;
public:
A() : x(10),y(25) {};
void Show()
{
cout<<x+y<<endl;
}
};
void main()
{
A a;
a.Show();
}
Инициализацию свойств по умолчанию рекомендуется организовывать спомощью списка инициализации. В литературе пишут, что довольно сложно объяснить причины этого, суть в том, что при списке инициализации, свойства инициализируются еще до выполнения метода конструктора. К тому же – это единственный способ задать значения по умолчанию для константных свойств класса.
Пример:
class A
{
private:
const int x;
public:
A()
{
x=10;
}
}
Здесь ошибка. А вот правильный вариант:
class A
{
private:
const int x;
public:
A() : x(10){}
void Show()
{
cout<<x<<endl;
}
};
void main()
{
A a;
a.Show();
}