Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы - Программирование (2я часть).docx
Скачиваний:
6
Добавлен:
26.09.2019
Размер:
36.37 Кб
Скачать

Указатель this.

Внутри каждого метода неявным образом используется указатель this – это фиксированный указатель на объект, метод которого вызывается. Используется в специфичных случаях, например если в классе-наследнике необходимо вызвать методы базового класса, когда в наследнике они были переопределены. Обычно this опускается если нет нужды его использовать. Например внутри метода будут равносильны следующие строчки:

this.value = 1;

value = 1;

Статические поля и методы класса.

Статические поля и методы используются для доступа к ним без необходимости создания объекта (экземпляра) класса. Например могут быть вспомогательные методы, просто сгруппированные для удобства внутри одного класса. Важно: в статических методах отсутствует возможность обращения к this, так как вызывается метод не конкретно объекта, а всего класса.

Переменные и члены класса, объявленные с модификатором доступа static, называются статическими членами класса. Cтатические переменные и методы доступны без создания объекта данного класса. Имя статической переменной квалифицируется именем класса с использованием операции принадлежности :: , а не именем экземпляра класса.

Например:

class A

{

public:

static int iStat;

};

Статические методы могут вызывать и использовать только другие статические методы и статические переменные. Из статического метода нельзя выполнять вызов не статического метода - члена класса.

Специальные методы класса — конструкторы и деструкторы.

Когда класс описан можно создать переменную его типа, которая называется объектом класса. Допустим у нас описан класс CStr, примеры создания объекта класса:

CStr s1; // Создание пустой переменной типа CStr, в которой потом можно будет сохранить объект.

CStr s2(“ааа”); // Создание объекта класса с параметром «ааа» и сохранение его в переменной с именем s2.

CStr s3 = CStr(“bbb”); // Создание объекта класса с параметром “bbb” и сохранение его в переменной с именем s3.

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

CStr(): { } // Конструктор по умолчанию который не имеет внутренней логики.

CStr(char * st) { initialize(st); } // Конструктор принимающий в качестве параметра указатель на символ (что является указателем на строке) и инициализируется вызовом внутреннего метода.

Специальным видом конструктора является конструктор копирования. Его единственным параметром является указатель на объект этого же класса. Пример:

CStr(const CStr & A) { … } // Внутри конструктора будет логика копирования полей.

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

~CStr() { delete st; }; // Очищается указатель на хранимую внутри строку.