В C ++ 03 вы можете инициализировать const
поля класса, используя list-initializer list в конструкторе.Например:
class a
{
public:
a();
void print()
{
cout<<y<<endl;
}
private:
const int y;
};
a::a() : y(2)
{
// Empty
}
Обратите внимание на синтаксис : y(2)
после конструктора.Это говорит C ++, чтобы инициализировать поле y
, чтобы оно имело значение 2. В более общем смысле, вы можете использовать этот синтаксис для инициализации произвольных членов класса теми значениями, которые вы хотите, чтобы они имели.Если ваш класс содержит const
членов данных или членов данных, которые являются ссылками, это единственный способ правильно их инициализировать.
Обратите внимание, что в C ++ 11 это ограничение ослаблено, и его можно назначить правильно.значения для членов класса в теле класса.Другими словами, если вы подождете несколько лет, чтобы скомпилировать исходный код, он должен скомпилироваться просто отлично.: -)