Покажчики на об'єкти в c, purecodecpp

Покажчики на об'єкти в c, purecodecpp
При першому знайомстві з покажчиками в C ++ (див. Дороговкази в C ++. Частина 1) може скластися спрощене уявлення, що покажчики можуть вказувати тільки на окремі змінні вбудованих (скалярних) типів C ++, і що це просто ще одна, альтернативна форма доступу до таких змінних . У такому застосуванні покажчики були б приємним доповненням мови, але з дуже обмеженими можливостями.

Розглянемо такі варіанти докладніше. Найпростішим варіантом буде використання покажчиків на складові об'єкти (об'єкти класів і структури). Але вже таке використання покажчиків відкриває широкі перспективи в C ++, як ми зараз побачимо.

Покажчики на об'єкти. лістинг 1

Це конструктор нового класу my. але з параметром створення. При виклику він викликає конструктор батьківського класу (number (numb)). передаючи йому це ж значення параметра. Наступні далі дужки <> обрамляють порожній блок коду, який означає, що нічого більш понад виклику батьківського конструктора робити не потрібно. Згадуємо, що вся послідовність конструкторів всіх батьківських класів - викликається (в порядку зворотному спадкоємства) при виклику конструктора породженого класу, але це тільки для конструкторів без параметрів. У разі параметризованих конструкторів родіелей вам прийдется викликати явно.

Але ми на цьому відволіклися в сторону від предмета нашого викладу ... А тепер саме час компілювати і подивитися виконання отриманої нами програми:

Покажчики на об'єкти в c, purecodecpp

Поки нічого принципово нового, і все це сильно схоже на те, як ми працювали б з покажчиками на змінні типу double. скажімо.

Згадаймо, на додаток, що оператор new для динамічного створення нового об'єкта:

а) викликає менеджер динамічного управління пам'яті і виділяє новий обсяг під розміщення такого об'єкта;

б) викликає конструктор відповідного класу (типу даних) для початкової розмітки (ініціалізації) виділеної пам'яті. Злегка модифікуємо свій приклад (файл ex2.cc):

Покажчики на об'єкти. лістинг 2

На цьому простому прикладі показано те, що в об'єктній моделі мови C ++ називається поліморфізм. І ця властивість є одним з найпотужніших виразних інструментів мови C ++. І реалізується ця техніка завжди через покажчики на об'єкти (figure *).

Ось як буде виглядати компіляція і виконання нашого прикладу (ex3.cc) в терміналі операційної системи Linux при використанні GCC компілятора з мови C ++ (це буде зайвий раз підтвердженням того, що програмування на мові C ++ в меншій мірі залежить від операційної системи):

Покажчики на об'єкти в c, purecodecpp

Ще раз звернемося до коду показаного прикладу, і зайвий раз зафіксуємо то надзвичайно важливу обставину, що покажчики C ++ завжди типізовані. покажчик не може бути «покажчиком на щось». Мова C ++ - це мова з суворою іменний типизацией. Типом же покажчика є: покажчик на тип вказується ним змінної, наприклад «покажчик на double». Покажчики на різні типи несумісні між собою по присвоєнню і порівнянню.

Техніка віртуальних функцій і поліморфізму є настільки основними для всієї філософії C ++, що вимагають окремого докладного розгляду. Про це поговоримо в одному з наступних уроків.

Щоб підтримати наш сайт - натисніть на скарбничку і виберіть будь-який зручний спосіб.

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

В кінці статті ти описала поліморфізм - я думаю це варто виділити в окрему статтю. Але перед цим написати статтю про «Спадкування класів в C ++» (це остання тема в твоєму плані на головній сторінці)

admin.

Схожі статті