- •10. Применение фундаментальных законов природы (второй закон Ньютона) к построению модели колебаний системы «шарик – пружина»
- •11. Второй способ моделирования колебаний механической системы «шарик – пружина» используя закон сохранения энергии.
- •12. Третий способ построения модели колебаний механической системы «шарик – пружина» с помощью вариационного метода.
- •13. Моделирование колебаний электрического контура. Аналогия моделей
- •9. Необходимое и достаточное условие интегрируемости функций. Классы интегрируемых функций.
- •2) Достаточность . Т.К. Для т справедливы неравенства , согласно условию теоремы, можно указать такое разбиение, что . В силу произвольности .
- •10. Теорема о среднем значении определенного интеграла
- •12. Функции нескольких переменных. Предел функции многих переменных.
- •Функция деструктора
- •Конструкторы производного класса
- •Виртуальные, дружественные, статические функции. Указатель this.
- •Решения методом Фурье краевой задачи неоднородного уравнения
- •Уравнения теплопроводности. Задача Коши. Формула Пуассона
- •Дифференциальные уравнения
Функция деструктора
Функция деструктора записывается в объявлении класса следующим образом:
class Circle(
public:...
~Circle (); //Деструктор private:...};
Обратите внимание на символ тильды (~), который предшествует прототипу функции деструктора. При записи прототипа функции деструктора соблюдайте следующие правила:
Имя функции деструктора должно совпадать с именем класса и ему должен предшествовать символ ~. Если, например, вы объявляете класс с именем Rectangle, именем функции деструктора должно быть ~Rectangle. Следовательно, объявление класса Rectangle должно выглядеть следующим образом:
class Rectangle{
public:
Rectangle(); // Конструктор...
~Rectangle(); // Деструктор private:... };
Ключевые слова public и private
Прототипы функций и объявления элементов данных включаются в объявлении класса в разделы public (открытый) или private (закрытый). Ключевые слова public и private говорят компилятору о доступности элементов-функций и данных. Например, функция SetRadius() определена в разделе public, и это означает, что любая функция программы может вызвать функцию SetRadius(). Функция CalculateArea() определена в разделе private, и эту функцию можно вызвать только в коде функций-элементов класса Circle
Перегруженные функции.
В C++ (но не в С) вы можете использовать одно и то же имя для нескольких функций. Например, вы можете объявить две функции с именем SetRadius() в объявлении класса CCircle. Такие функции называются перегруженными функциями.
-
Абстрактные базовые классы, конструкторы производного класса.
Абстрактным называется класс, в котором есть хотя бы одна чистая (пустая) виртуальная функция.
Чистой виртуальной называется компонентная функция, которая имеет следующее определение:
virtual тип имя_функции(список_формальных_параметров)= 0;
Чистая виртуальная функция ничего не делает и недоступна для вызовов. Ее назначение – служить основой для подменяющих ее функций в производных классах. Абстрактный класс может использоваться только в качестве базового для производных классов. В абстрактном классе объявлены чистые виртуальные функции, которые по сути есть абстрактные методы.
Пример.
class Base {
public:
Base(); // конструктор по умолчанию
Base(const Base &); // конструктор копирования
virtual ~Base(); // виртуальный деструктор
virtual void Show(void) = 0; // чистая виртуальная функция
// другие чистые виртуальные функции
protected: // защищенные члены класса
private: // часто остается пустым, иначе будет мешать будущим разработкам };
class Derived : virtual public Base {
public:
Derived(); // конструктор по умолчанию
Derived(const Derived &); // конструктор копирования
Derived(параметры); // конструктор с параметрами
virtual ~Derived(); // виртуальный деструктор
void Show(void); // переопределенная виртуальная функция
// другие переопределенные виртуальные функции
Derived &operator =(const Derived &); // перегруженная операция присваивания
// другие перегруженные операции
protected: // используется вместо private, если ожидается наследование
private: // используется для деталей реализации };
По сравнению с обычными классами абстрактные классы пользуются "ограниченными правам". А именно:невозможно создать объект абстрактного класса; абстрактный класс нельзя употреблять для задания типа параметра функции или типа возвращаемого функцией значения; абстрактный класс нельзя использовать при явном приведении типов; в то же время можно определить указатели и ссылки на абстрактный класс.