ItsWedth(wedth),

ItsHeight(height) {}

Особенностью функции, которая имеет параметр по умолчанию является возможность ситуации: если параметр не указывается в скобках при вызове, то он имеет это значение. Значения параметров по умолчанию могут задаваться справа налево, пример: void DrawRect (int aWidth, bool Use = false, int aHeight);не может быть использован, так как самый правый параметр по умолчанию не имеет значения.

Выбор между перегруженными функциями и значениями по умолчанию с одной стороны является делом каждого программиста, но существуют общие принципы, когда перегрузка функции предпочтительнее:

§ Не существует стандартных общепринятых значений, которые можно было бы использовать по умолчанию;

§ В программе в зависимости от ситуации необходимо использовать разные алгоритмы;

§ Необходимо иметь возможность изменять тип значений, передаваемых в функцию.

Как уже говорилось, существует конструктор по умолчанию, который никак себя не проявляет, пользователь имеет возможность написать свой собственный конструктор по умолчанию ( по определению это конструктор не имеющий параметров). Это необходимо если в программе был создан свой конструктор, с этого момента компилятор перестаёт предлагать конструктор по умолчанию, даже в ситуации, когда необходим конструктор без параметров.

Конструктор может быть перегружен, как и любая другая функция, это необходимо для повышения гибкости программы. Например: можно в предыдущем примере создать конструктор, который при введении его без параметров будет использовать значения по умолчанию.