Lab11
.pdf11
{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 различными способами и вызов функций класса.