Если параметры не передаются конструктору, в определении объекта не нужно включать пустые круглые скобки.

Использование конструкторов с аргументами по умолчанию

Конструктор без параметров называют конструктором по умолчанию. Такой конструктор обычно присваивает переменным-членам класса наиболее часто используемые значения. Например, в описанном выше примере класса my_Time используется конструктор по умолчанию.

my_Time() { hours = 0; minutes = 0; }

В нем переменным hours и minutes присваиваются нулевые значения. Таким образом, после создания экземляра объекта типа my_Time, он будет содержать вполне допустимые значения, а не "мусор".

Для каждого класса может существовать только один конструктор по умолчанию.

Если для класса не определено никакого конструктора, компилятор создает конструктор по умолчанию. Такой конструктор не задает никаких начальных значений. Поэтому, если необходимо, чтобы перед использованием объекта данным-членам класса были присвоены начальные значения или же нужно выполнить другие задачи инициализации, например, динамически выделить память под объект, то Вы должны будете определить собственный конструктор.

Если класс имеет конструктор по умолчанию (определенный программистом или созданный компилятором), можно определить объект класса без передачи параметров, например:

my_Time time1;

Следующая команда, например, не создает объект типа my_Time, с вызовом конструктора по умолчанию,

my_Time times ();

а является определением функции times, которая не принимает параметров и возвращает объект типа my_Time.

Давайте добавим к нашему классу конструктор по умолчанию, который будет инициализировать данные-члены класса нулевыми значениями. Тогда программа примет вид:

#include <iostream.h> // описание класса Pointclass Point { int x, y; // координаты точки, по умолчанию имеют // уровень доступа privatepublic: // конструктор по умолчанию инициализирует данные-члены класса нулевыми значениями Point() { x = 0; y = 0; } // конструктор присваивает переменным класса x и y начальные значения // соответственно x0 и y0 Point(int x0, int y0) { x = x0; y = y0; } // функция вывода координат точки на экран void ShowPoint() { cout << " x = " << x; cout << " y = " << y; } // функция пересчета координат точки относительно нового центра // с координатами в точке (x0, y0) void OffsetXY(int x0, int y0) { x -= x0; y -= y0; }}; void main(){ Point A(1,3); // создаем точку А (объект типа Point) // с координатами x = 1, y = 3 (вызывается конструктор Point(int, int)) cout << " Point A is "; A.ShowPoint(); // выводим координаты точки А на экран A.OffsetXY(2,2); // переносим центр координат в точку (2,2) A.ShowPoint(); // показываем новые координаты точки А Point B; // создаем точку В (вызывается конструктор по умолчанию Point()) cout << " Point B is "; B.ShowPoint(); // выводим координаты точки В на экран}

Как видно из примера, класс может иметь несколько конструкторов.