Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab11

.pdf
Скачиваний:
8
Добавлен:
23.03.2015
Размер:
311.18 Кб
Скачать

11

{private:

 

int N = 0; //ОШИБКА

//ОШИБКА

const int CInt = 5;

int SRInt = N; //ОШИБКА

};

Инициализация переменных внутри определения класса бессмысленна, потому что определение класса задает всего лишь тип каждой из переменных-членов, но не резервирует для них реальную область памяти. Скорее всего, при написании программы требуется инициализировать переменные-члены каждый раз при описании экземпляра класса. Следовательно, целесообразно инициализировать переменные внутри конструктора класса. Конструктор класса CRectangle инициализирует переменные-члены, используя выражение присваивания. Однако определенным типам данных, в частности, константам и ссылкам, не могут быть присвоены значения. Чтобы эта проблема не возникала, в языке C++ предусмотрено специальное свойство конструктора, называемое списком инициализации, который позволяет инициализировать одну или более переменных, а не

присваивать им значения.

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

class С

{

private: int N;

const int CInt; int &RInt; public:

С (int Farm) : N (Farm), CInt (5), RInt (N)

{

// код конструктора ...

}

};

Следующее определение создает объект, демонстрирующий применение списка инициализации, где переменные N и CInt инициализированы значениями 0 и 5, а переменная-член RInt - как ссылка на переменную N:

12

С CObject (0) ;

Задания.

1.Определите класс Rectangle, описанный в теоретической части. Определите в классе функцию Line, которая выводит на экран координаты точек, между которыми должна бать нарисована линия.

2.Определите класс Block (параллелепипед), в котором определите три закрытые вещественные переменные (высота, ширина и длина). Определите в классе два конструктора: по умолчанию и с тремя параметрами. Определите в классе закрытую переменную для хранения объёма. Значение объёма должно вычисляться при изменении размеров параллелепипеда. В классе определите открытую функцию для установки значений длины, ширины и высоты и открытую функцию для вывода значений закрытых переменных. В функции main() продемонстрируйте создание объектов класса Block различными способами и вызов функций класса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]