Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Контакти
 


Тлумачний словник
Авто
Автоматизація
Архітектура
Астрономія
Аудит
Біологія
Будівництво
Бухгалтерія
Винахідництво
Виробництво
Військова справа
Генетика
Географія
Геологія
Господарство
Держава
Дім
Екологія
Економетрика
Економіка
Електроніка
Журналістика та ЗМІ
Зв'язок
Іноземні мови
Інформатика
Історія
Комп'ютери
Креслення
Кулінарія
Культура
Лексикологія
Література
Логіка
Маркетинг
Математика
Машинобудування
Медицина
Менеджмент
Метали і Зварювання
Механіка
Мистецтво
Музика
Населення
Освіта
Охорона безпеки життя
Охорона Праці
Педагогіка
Політика
Право
Програмування
Промисловість
Психологія
Радіо
Регилия
Соціологія
Спорт
Стандартизація
Технології
Торгівля
Туризм
Фізика
Фізіологія
Філософія
Фінанси
Хімія
Юриспунденкция






Похідні класи на прикладі векторів

Визначимо вектор, якому користувач може задати межі індексу:

class vec: public vector {

int low, high;

public: vec )int, int);

int &elem(int);

int &operator [ ] (int);

};

Задання класу vec в якості : public vector, означає, по-перше, що це є вектор. По-друге, тип vec має (наслідує) всі властивості типу vector на додаток до властивостей, які оголошені спеціально для нього. Відповідно, vector– базовий клас для vec і навпаки, vec– похідний від vector.

Клас vec модифікує клас vector завдяки наявності іншого конструктора, що вимагає від користувача задати дві границі індексу, а не розмір, і завдяки власним функціям доступу elem(int)та operator [ ] (int). elem( ) класу vec легко описати в термінах elem( )класу vector:

int &vec: : elem(int i)

{ return vector : : elem(i-low);

}

 

Оператор дозволу області дії : : використовується, щоб уникнути безкінечної рекурсії при виклику vec: : elem( ) з самого себе.

 

Масиви об’єктів

Масив може зберігати будь-які об’єкти, як вбудовані так і створені користувачем. При оголошені масиву компілятору повідомляється тип та кількість об’єктів. Це дозволяє виділити ділянку пам’яті необхідного розміру. Компілятор визначає розмір пам’яті, що необхідний для одного елементу масиву (об’єкту), на основі оголошення класу. Щоб об’єкти можна було створити при оголошені масиву, клас повинен володіти стандартним конструктором, який не отримує ніяких аргументів.

Доступ до даних-членів об’єктів, що знаходяться в масиві, відбувається в два етапи. Спочатку, використовуючи оператор індексу ([ ]) ідентифікується елемент масиву, а потім з допомогою оператора крапки (.) отримується доступ до певної змінної-члену.

Наприклад:

 

Cat litter[5];

int I;

for (i=0; i<5; i++)

litter[i].SetAge(2*i+1);

 

Цикл встановлює вік кожного з п’яти об’єктів класу Cat в масиві.

 

Масиви вказівників

До тепер обговорювались масиви, елементи яких розміщалися в стеку. Але розмір стеку значно менший за об’єм динамічної пам’яті. Тому можна оголосити об’єкти масиву в динамічній пам’яті, а в самому масиві зберігати лише вказівники на них. Це значно зменшує об’єм стекової пам’яті, що використовується.

Наприклад,

 

Cat *Family[500];

int i;

Cat *pCat;

for (i=0; i<500; i++)

{

pCat = new Cat;

pCat -> SetAge(2*i+1);

Family[i] = pCat;

}

 

Масив Family включає 500 вказівників на об’єкти класу Cat. В циклі створюється в динамічній пам’яті 500 нових об’єктів класу Cat і для кожного з них встановлюється вік в два рази більший за його номер +1. Потім вказівники заносяться в масив.

 




Переглядів: 228

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

 

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.005 сек.