const
и ссылочные переменные должны быть инициализированы в строке, в которой они объявлены.
class Something
{
private:
const int m_nValue;
public:
Something()
{
m_nValue = 5;
}
};
выдаст код, эквивалентный;
const int nValue; // error, const vars must be assigned values immediately
nValue = 5;
Присвоение значений константных или ссылочных переменных-членов в теле конструктора недостаточно.
C ++ предоставляет другой способ инициализации переменных-членов, который позволяет инициализировать переменные-члены при их создании, а не после. Это делается с помощью списка инициализации.
Вы можете присваивать значения переменным двумя способами: явным и неявным:
просмотреть обычную копию в буфер обмена?
int nValue = 5; // explicit assignment
double dValue(4.7); // implicit assignment
Использование списка инициализации очень похоже на выполнение неявных присвоений.
Помните, что список инициализации элементов, используемый для инициализации базовых объектов и объектов данных элементов, находится в определении, а не в объявлении конструктора.
Подробнее о cpp-туториале и Code Wrangler .