Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
26-30.docx
Скачиваний:
5
Добавлен:
21.09.2019
Размер:
37.14 Кб
Скачать

Операции new и delete

Операция new позволяет получить память из кучи (это такой участок памяти) во время выполнения программы. При этом Вы получаете указатель на начало участка выделенной памяти.

После того, как память которую вы получили больше вам не нужна, необходимо её "отпустить". Делается это с помощью операции delete.

Инкремент и декремент

Инкремент - увеличение переменной на единицу. Новое значение сохраняется в переменной.

Декремент - уменьшение переменной на единицу. Новое значение сохраняется в переменной.

int x = 5;

int y;

y = ++x; // y = 6, x = 6

y = --x; // y = 5, x = 5

y = x++; // y = 5, x = 6

y = x--; // y = 6, x = 5

30. Методи доступу до методів класу.

Доступ до відкритих полів та методів класу здійснюється прямим

зверненням, з використанням операторів прямого і непрямого вибору, як в

структурах і об'єднаннях.

Оператор прямого вибору – це точка „.”. Оператор непрямого вибору –

це спеціальний символ, що складається з мінуса та знаку більше „->”.

Оператор прямого вибору використовується тоді, коли доступ до

об’єкту класу у програмі виконується безпосередньо. Оператор непрямого

(опосередкованого) вибору використовується, коли доступ до об’єкту класу

у програмі виконується опосередковано через покажчик на об’єкт.

Доступ до закритих та захищених методів та полів здійснюється лише

за допомогою відкритих методів класу або за допомогою друзів класу.

Доступ за допомогою друзів класу буде розглядатись пізніше, а зараз

розглянемо приклад без використання друзів класу.

class MyClass

{

int i; //закрите поле класу

public:

//відкриті методи класу

MyClass(){i=0};//конструктор

inline int get_i(){ return i; };

inline void set_i(int) { i=x; return; };

};

...

void main()

{

MyClass obj;//об’явлення об’єкту

MyClass * obj_ptr=&obj;// об’явлення покажчика на об’єкт

obj. set_i(5) ; //встановлюємо нове значення закритого поля i

//шляхом безпосереднього звернення до відкритого методу

obj_ptr-> set_i(6) ; // встановлюємо нове значення закритого поля i

//шляхом опосередкованого (через покажчик об’єкт) звернення

22//до відкритого методу

}

Як зазначалось раніше клас – це тип даних, інформаційна структура, а

не об'єкт даних. Кожен об'єкт класу містить свою власну копію полів цього

класу. Проте деякі типи найелегантніше реалізуються, якщо всі об'єкти цього

типу можуть спільно використовувати (розділяти) деякі дані. При цьому

бажано, щоб такі дані , що розділяються, були описані як частина даного

класу. Наприклад для управління завданнями в операційній системі

використовують список всіх завдань, або при створенні об'єктів класу

необхідно, щоб ці об'єкти могли контролювати кількість створених об'єктів

даного класу і т.д.

Для реалізації цих властивостей в С++ передбачено використання

статичних полів класу. Статичні поля описуються за допомогою ключового

слова static. Оскільки статичні члени класу використовуються всіма

об’єктами класу, то бажано перед використанням такі поля завжди

ініціалізувати при описі класу .

Наведемо приклад.

class MyClassStatic

{

int i;

static int count; //статичне поле класу

public:

MyClassStatic(int a=0){i=a;};//конструктор

int inc_count(){++count; return 0;}; //метод доступу до статичного поля

int get_i(){return i;};//метод доступу до звичайного закритого поля

int get_count(){return count;}; //метод доступу до статичного поля

};

int MyClassStatic::count=0; //ініціалізація статичного поля

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