Намерение состоит в том, что после инициализации объект класса «готов к использованию». С помощью простых встроенных типов компилятор знает, как их инициализировать - например, 0. Но в случае более сложных типов, особенно связанных с наследованием и справочными данными, это становится трудным или даже невозможным.
C ++ требует инициализации ссылочной переменной при создании (конструирование для класса), и это должно быть сделано в списке инициализатора конструктора, например:
class Demo {
private:
int& refInt;
public:
//Demo() {} // illegal - will not compile since it does not intiailise refInt
Demo(int anInt) : refInt(anInt) {} // valid, correctly initialised refInt
};
int main() {
int a;
Demo demo(a);
return 0;
}
Примечание: в этом примере у вас не может быть конструктора по умолчанию, так как вы должны инициализировать refInt .
Кроме того, для класса, который наследует, конструктор - это место, чтобы определить, какой конструктор в базовом классе (или классах) вызывается во время инициализации производного класса.