Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_S_Exem.doc
Скачиваний:
3
Добавлен:
15.09.2019
Размер:
190.46 Кб
Скачать
  1. Поясните назначение и особенности использования виртуальных методов, запишите синтаксис их объявления, приведите примеры.

Формат Формат:

virtual тип имя([параметры]){

[операторы;]

}

#include <iostream>

using namespace std;

// Базовый класс

class Base {

public:

virtual void show() {

cout « “Base\n”;

}

};…

Виртуальные методы — один из важнейших приёмов реализации полиморфизма. Они позволяют создавать общий код, который может работать как с объектами базового класса, так и с объектами любого его класса-наследника. При этом базовый класс определяет способ работы с объектами и любые его наследники могут предоставлять конкретную реализацию этого способа. В некоторых языках программирования, например в Java, нет понятия виртуального метода, данное понятие следует применять лишь для языков, в которых методы родительского класса не могут быть переопределены по умолчанию, а только с помощью некоторых вспомогательных ключевых слов.

Базовый класс может и не предоставлять реализации виртуального метода, а только декларировать его существование. Такие методы без реализации называются «чистыми виртуальными» (перевод англ. pure virtual) или абстрактными. Класс, содержащий хотя бы один такой метод, тоже будет абстрактным. Объект такого класса создать нельзя (в некоторых языках допускается, но вызов абстрактного метода приведёт к ошибке). Наследники абстрактного класса должны предоставить реализацию для всех его абстрактных методов, иначе они, в свою очередь, будут абстрактными классами.

  1. Поясните, что представляют собой абстрактные классы в контексте языка С++, их назначение, приведите пример создания абстрактного класса.

Базовый класс, объекты которого никогда не будут реализованы, называется абстрактным классом.

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

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

это метод, после объявления которого добавлено выражение =0.

Например:

virtual void f(int)=0;Чисто виртуальный метод

пример:

class CA { // Абстрактный класс

public:

CA ( void ) { std::cout << "This object of the class "; }

virtual void Abstr ( void ) = 0; // Чистая (пустая) виртуальная функция.

void fun ( void ) { std::cout << "Реализация не будет наследоваться!"; }

~CA () { std::cout << "." << std::endl; } //Вызывается в обр. порядке конструкторов

};

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

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

Исключения позволяют логически разделить вычислительный процесс на две части – обнаружение аварийной ситуации и ее обработка.

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

- Ключевое слово try служит для обозначения контролируемого блока – кода, в котором может (может произойти ошибка). генерироваться исключение

Синтаксис:

try {… }

-Исключение (порождается) выражением throw, которое имеет вид: throw [выражение];

- catch содержит код, который обрабатывает исключение и поэтому называется

обработчиком исключения

Синтаксис:

try {// тело блока try}

catch (тип_исключения) {// тело блока catch }

Существует три формы записи:

catch(тип имя) {…/*обработчик*/}

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

catch(тип) {…/*обработчик*/}

- играет роль только тип

catch(…) {…/*обработчик*/} - перехватывает все исключения

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

Контролируемый блок

Ключевое слово try служит для обозначения контролируемого блока–кода, в котором может генерироваться исключение(может произойти ошибка).

Синтаксис

try { … }

Генерация исключения

Исключение генерируется(порождается) выражением throw, которое имеет вид:

throw [выражение];

Тип выражения, стоящего после throw, определяет тип порождаемого исключения. При генерации исключения выполнение текущего блока прекращается, и происходит поиск соответствующего обработчика и передача ему правления.

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