Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответ по госу 3.14 4.1 4.2 4.3 4.4 5.1.docx
Скачиваний:
3
Добавлен:
16.09.2019
Размер:
39.15 Кб
Скачать

8. Оператор continue

Оператор

continue;

приводит к передаче управления на продолжающую цикл часть наименьшего охватывающего этот оператор оператора while, do или for; то есть на конец цикла. Более точно, в каждом из операторов

while(...) { do { for(...) {

... ... ...

contin: ; contin: ; contin: ;

} } while(...); }

Оператор continue эквивалентен оператору goto contin. (За contin: следует пустой оператор.

9. Оператор возврата

Возвращение из функции в вызывающую программу осуществляется с помощью оператора return, который имеет одну из следующих форм

return;

return выражение;

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

10. Оператор GOTO

Управление можно передавать безусловно с помощью оператора

goto идентификатор1

идентификатор должен быть меткой, локализованной в данной функции.

11. Помеченный оператор

Перед любым оператором может стоять помеченный префикс вида

идентификатор:

который служит для описания идентификатора в качестве метки. Метки используются только для указания места, куда передается управление оператором goto. Областью действия метки является данная функция, за исключением любых подблоков, в которых тот же идентификатор описан снова.

12. Пустой оператор

Пустой оператор имеет форму:

;

Пустой оператор оказывается полезным, так как он позволяет поставить метку перед закрывающей скобкой } составного оператора или указать пустое тело в операторах цикла, таких как while.

4.4 Объектно-ориентированное программирование.

Объектно-ориентированное программирование или ООП (object-oriented programming) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является реализацией определенного типа, использующая механизм пересылки сообщений и классы, организованные в иерархию наследования.

C++ добавляет к C объектно-ориентированные возможности

.Инкапсуляция (encapsulation) — техника, при которой несущественная с точки зрения интерфейса объекта информация прячется внутри него.

Инкапсуляция в С++ реализуется через указание уровня доступа к членам класса: они бывают публичными (открытыми, public), защищёнными (protected) и собственными (закрытыми, приватными, private).

Наследование (inheritance) — свойство объектов, посредством которого экземпляры класса получают доступ к данным и методам классов-предков без их повторного определения. Наследование позволяет различным типам данных совместно использовать один и тот же код, приводя к уменьшению его размера и повышению функциональности.

Наследование бывает публичным, защищённым и закрытым (т. е. закрытого типа):

Наследник — это больше чем базовый класс, поэтому, если наследование открытое, то он может использоваться везде, где используется базовый класс, но не наоборот.

Полиморфизм (polymorphism) — свойство, позволяющее использовать один и тот же интерфейс для различных действий; полиморфной переменной, например, может соответствовать несколько различных методов. Полиморфизм перекраивает общий код, реализующий некоторый интерфейс, так, чтобы удовлетворить конкретным особенностям отдельных типов данных.

Полиморфизмом в программировании называется переопределение наследником функций-членов базового класса, например:

class Figure {

...

void Draw() const;

...

};

class Square : public Figure {

...

void Draw() const;

...

};

class Circle : public Figure {

...

void Draw() const;

...

};

Какая именно из функций будет вызвана — Figure::Draw(), Square::Draw() или Circle::Draw() — определяется во время компиляции. Например:

Circle *c = new Circle(0,0,5);

Figure *f = c; // Всё ok: Figure — базовый класс для Circle

c->Draw();

f->Draw(); // Указатели друг другу равны, но для f будет вызвана другая функция, чем для c

Несмотря на то, что оба указателя указывают на один и тот же объект класса Circle, для c будет вызвана Circle::Draw(), а для f — Figure::Draw(), поскольку f — указатель на объект класса Figure. Такой полиморфизм называется статическим.

Объект (object) — конкретная реализация класса, обладающая характеристиками состояния, поведения и индивидуальности, синоним экземпляра.

В стандарте C++ под классом (class) подразумевается пользовательский тип, объявленный с использованием одного из ключевых слов class, struct или union, под структурой (structure) подразумевается класс, определённый через ключевое слово struct, и под объединением (union) подразумевается класс, определённый через ключевое слово union.

Конструкторы и деструктор

В классах всегда есть специальные функции — конструкторы и деструкторы, которые могут быть объявлены явно или неявно.

Конструктор вызывается для инициализации объекта (соответствующего типа) при его создании, а деструктор — для уничтожения объекта. В частности, конструктор может быть вызван для выполнения преобразования к классовому типу.

Конструктор — это метод, имеющий имя, совпадающее с именем класса. Две основные задачи конструктора заключаются в выделении памяти под вновь создаваемый объект и его инициализация.

Конструкторы обозначаются как одноимённые классу функции (например, Array::Array), деструкторы — как имя класса, предварённое тильдой (например, Array::~Array). Для конструкторов и деструкторов нельзя указывать тип возврата. Деструктор нельзя объявлять как принимающий аргументы. Класс может иметь сколько угодно конструкторов (с разными наборами параметров), в том числе шаблонных, и только один (причём нешаблонный) деструктор.