Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольные вопросы + ответы.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
323 Кб
Скачать
☆
  1. Понятие абстрактного класса.

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

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. Использование потокового ввода-вывода.

Стандартная библиотека содержит удобные объектно-ориентированные

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

Предопределённые потоки: cin, cout, cerr, clog. Базовый класс: ios. Производные: iostream (поток для ввода и вывода), istream (поток ввода), ostream (поток вывода).

Операции ввода-вывода реализуются через перегруженные операторы >> (ввод) и << (вывод).

std::ostream& operator << (std:: ostream &os, const generator &basicnoisegen)

{

os <<basicnoisegen.ymedium<<" "<<basicnoisegen.amplitude<<" "<<endl;

return os;

}

std::istream& operator >> (std:: istream &is, generator& basicnoisegen)

{

is >> basicnoisegen.ymedium;

return is;

}

Примеры флагов: left (right), dec (oct, hex), scientific (fixed), boolalpha. Флаги определены внутри класса ios. Доступ к ним через оператор расширения области видимости ::

Чтение всей строки целиком из потока выполняется функцией getline.

Потоковый ввод-вывод

Классы: fstream (поток для ввода и вывода), ifstream (поток ввода), ofstream (поток вывода).

Открытие файла: через конструктор или методом open, Закрытие файла: метод close, Проверка достижения конца файла: метод eof.

  1. Порождаемые функции в обобщённом программировании.

Порождаемая функция – это функция, которая может автоматически перегружаться.

Функция становится порождаемой при указании в начале её определения (объявления): template <список параметров шаблона>. Указанные в списке имена параметров можно использовать внутри определения функции.

template <class T> void swap(T& first, T& second)

{

T temp = first;

first = second;

second = temp;

return;

}

  1. Порождаемые классы в обобщённом программировании.

В порождаемом классе все алгоритмы определены, а типы

обрабатываемых данных определяются позже, при создании объектов

класса.

Класс становится порождаемым при указании в начале его определения (объявления): template <список параметров шаблона>

Указанные в списке имена параметров можно использовать внутри определения класса.

Инстанцирование шаблона выполняется при создании объектов порождаемого класса.

При инстанцировании шаблона автоматически создаётся новый класс. Реализация методов порождаемого класса может быть приведена извне определения класса путём использования инструкции template.

Реализация методов шаблонного класса приводится в заголовочном файле.

Это допустимо, поскольку такие реализации – правила генерации кода для компилятора.

template <class T, int size>

class SimpleVector {

public:

SimpleVector() {}

~SimpleVector() {}

T& operator[] (int index) { return data[index]; }

bool get(int index, T& value) const;

bool set(int index, const T& value);

private:

T data[size];

};