logo search
inf_otvety_24-40

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

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

my_Time times ();

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

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

#include <iostream.h>

// описание класса Point

class Point {

int x, y; // координаты точки, по умолчанию имеют

// уровень доступа private

public:

// конструктор по умолчанию инициализирует данные-члены класса нулевыми значениями

Point()

{

x = 0;

y = 0;

}

// конструктор присваивает переменным класса x и y начальные значения

// соответственно x0 и y0

Point(int x0, int y0)

{

x = x0;

y = y0;

}

// функция вывода координат точки на экран

void ShowPoint()

{

cout << "\nx = " << x;

cout << "\ny = " << 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 << "\nPoint A is \n";

A.ShowPoint(); // выводим координаты точки А на экран

A.OffsetXY(2,2); // переносим центр координат в точку (2,2)

A.ShowPoint(); // показываем новые координаты точки А

Point B; // создаем точку В (вызывается конструктор по умолчанию Point())

cout << "\nPoint B is \n";

B.ShowPoint(); // выводим координаты точки В на экран

}

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