logo
inf_otvety_24-40

Основное назначение конструкторов - инициализация объектов.

Типичная ошибка программирования. Попытка объявить тип возвращаемого значения для конструктора или возвратить значение из конструктора.

С помощью параметров конструктору можно передать любые данные, необходимые для инициализации объектов класса.

Рассмотрим небольшой пример. Опишем класс Точка (Point), который будет содержать координаты точки в двумерной системе координат, функцию вывода координат точки на экран, функцию смещения точки относительно нового центра координат. Затем, просто создадим одну точку и выведем ее координаты на экран. После пересчитаем координаты точки относительно нового центра и снова выведем данные на экран.

#include <iostream.h>

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

class Point {

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

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

public:

// конструктор присваивает переменным класса 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(1, 3)

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

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

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

}

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

Point A(1,3);

Такое определение создает экземпляр A класса Point, вызывая конструктор класса с параметрами (1,3).