/* Пауза для того, чтобы посмотреть на результат работы программы */
system( "PAUSE" ) ; return 0 ;
}
_________________
207 стр. Глава 17. Аргументация конструирования
Обратите особое внимание на первую строку конструктора. В этой строке есть кое-что, с чем вы до этого не встречались. Следующая за двоеточием команда вызывает конструкторы членов данного класса. Компилятор С++ прочтёт эту строку так: "Вызвать конструктор для члена id с аргументом ssId . Все остальные данные-члены, не вызванные явно, строить с использованием конструктора по умолчанию".
Результат работы этой программы свидетельствует, что всё получилось так, как мы и хотели.

Присвоение id 1234
Конструктор Student( Chester )
Сообщение из функции main
Press any key to continue...
Деструктор id 1234
Конструкторы константных членов...208
Ещё одна проблема возникает при инициализации членов, объявленных как const . Вспомним, что переменная, объявленная как const , инициализируется при объявлении и после этого не может быть изменена. Каким же образом конструктор может присвоить значение константному члену? Проблема решается путём использования синтаксиса с двоеточием:
class Mammal
{
public :
Mammal( int nof ) : numberOfFeet( nof )
{ }
protected :
const int numberOfFeet ;
} ;
Объект класса Mammal ( млекопитающее ) имеет постоянное количество ног ( ампутации не рассматриваются ). Таким образом, это количество следует объявить как const . Значение данному члену присваивается при создании объекта, и после этого не может быть изменено.

«Программисты часто используют синтаксис с двоеточием для инициализации не только константных, но и других членов-данных. Это не обязательно, но часто используется на практике.»
[ Советы ]
►Управление последовательностью конструирования...208
При наличии нескольких объектов, в которых определены конструкторы, программист обычно не заботится о том, в каком порядке будут конструироваться эти объекты. Однако, если один или несколько конструкторов имеют побочное действие, различная последовательность конструирования может привести к разным результатам.
_________________
208 стр. Часть 3. Введение в классы
Порядок создания объектов подчиняется перечисленным ниже правилам.
■■■
■ Локальные и статические объекты создаются в том порядке, в котором они объявлены в программе.
■ Статические объекты создаются только один раз.
■ Все глобальные объекты создаются до вызова функции main( ).
■ Нет какого-либо определённого порядка создания глобальных объектов.
■ Члены создаются в том порядке, в котором они объявлены внутри класса.
■ Деструкторы вызываются в порядке, обратном порядку вызова конструкторов.
■■■

«Статическая переменная — это переменная, которая является локальной по отношению к функции, но при этом сохраняет своё значение между вызовами функции. Глобальная переменная — это переменная, объявленная вне какой-либо функции.»
[ Помни! ]
Рассмотрим каждое из приведённых выше правил.
Локальные объекты создаются последовательно...209
Локальные объекты создаются в том порядке, в котором в программе встречаются их объявления. Обычно это порядок появления кода объявлений в функции. ( Если, конечно, в функции нет безусловных переходов, "перепрыгивающих" через объявления. Кстати говоря, безусловные переходы между объявлениями лучше не использовать — это затрудняет чтение и компиляцию программы. )
Статические объекты создаются один раз...209
Статические переменные подобны обычным локальным переменным с тем отличием, что они создаются только один раз. Это очевидно, поскольку статические переменные сохраняют своё значение от вызова к вызову функции. В отличие от С, который может инициализировать статическую переменную в начале программы, С++ дождётся, когда управление перейдёт к строке с объявлением статической переменной, и только тогда начнёт её создание. Разберёмся в приведённой ниже простой программе.
Читать дальше