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

30.Инкапсуляция. Наследование.

Скрытие деталей реализации называется инкапсуляцией. Инкапсуляция яв'ляется ключевой идеей как структурного, так и объектно-ориентированного программирования. Пример инкапсуляции — помещение фрагмента кода в функцию и

передача всех необходимых ей данных в качестве параметров. Чтобы использовать такую функцию, требуется знать только ее интерфейс, определяемый заголовком (имя, тип возвращаемого значения и типы параметров). Интерфейсом

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

переменных и констант. Описания глобальных программных объектов во всех

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

31.Полиморфизм.

Полиморфизм – возможность подмены некоторых методов или свойств для задания им другого поведения.

32.Классы. Члены класса.

33.Конструктор. Деструктор. Функции-члены.

Деструктор Метод, который автоматически вызывается при уничтожении объекта, называется деструктором. Деструктор имеет имя, совпадающее с именем конструктора (а также всего класса) и перед ним указывается символ тильда (~).

1

class F

2

{

3

private:

4

    int data;

5

public:

6

    Foo():data(0)

7

    { }

8

    ~Foo()

9

    { }

10

};

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

34.Операция доступа к области видимости “::”. Указатель this.

::Операция доступа.

Обеспечивает обращение к именованной глобальной области памяти, находящейся вне области видимости. Эта операция применяется при работе с одноимёнными объектами, расположенными во вложенных областях действия имён. Когда объект во внутренней области действия имени скрывает одноименный объект, областью действия которого является файл. Например:

int m; // Глобальная переменная. ::::: int mmm() { int m; // Локальная переменная. m = 100; // Присвоение значения локальной переменной. ::m = 125; // Присвоение значения глобальной // переменной m, находящейся вне области видимости // имени. }

Не следует испытывать никаких иллюзий относительно возможностей этой операции. Операция обеспечивает доступ лишь к глобальным, естественно, ранее объявленным объектам, независимо от степени вложенности области действия. Поэтому она не обладает свойством транзитивности. Выражения вида ::(::(::m)) воспринимаются транслятором как ошибочные.

Указатель this

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

скрытого параметра this, в котором хранится константный указатель на вызвавший функцию объект. Указатель this неявно используется внутри метода для

ссылок на элементы объекта. В явном виде этот указатель применяется в основном для возвращения из метода указателя (return this;) или ссылки (return

*this;) на вызвавший объект.

Для иллюстрации использования указателя this добавим в приведенный выше

класс monstr новый метод, возвращающий ссылку на наиболее здорового (поле

health) из двух монстров, один из которых вызывает метод, а другой передается

ему в качестве параметра (метод нужно поместить в секцию public описания

класса):